diff options
-rw-r--r-- | js/reveal.js | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/js/reveal.js b/js/reveal.js index cccc387..da43738 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -518,18 +518,26 @@ */ function createSingletonNode( container, tagname, classname, innerHTML ) { - var node = container.querySelector( '.' + classname ); + // Find all nodes matching the description + var nodes = container.querySelectorAll( '.' + classname ); - // If no node was found or the node is inside another container - if( !node || node.parentNode !== container ) { - node = document.createElement( tagname ); - node.classList.add( classname ); - if( typeof innerHTML === 'string' ) { - node.innerHTML = innerHTML; + // Check all matches to find one which is a direct child of + // the specified container + for( var i = 0; i < nodes.length; i++ ) { + var testNode = nodes[i]; + if( testNode.parentNode === container ) { + return testNode; } - container.appendChild( node ); } + // If no node was found, create it now + var node = document.createElement( tagname ); + node.classList.add( classname ); + if( typeof innerHTML === 'string' ) { + node.innerHTML = innerHTML; + } + container.appendChild( node ); + return node; } |