aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/reveal.js24
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;
}