diff --git a/js/reveal.js b/js/reveal.js
index cccc387e11911f61ddebeecf34123cb2caf5dc3d..da4373885e131ef90f56c35e452e98ff38ae93de 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;
 
 	}