From 65ebf57c1e5d7fa96536b66d4fcacbafad8dc1e5 Mon Sep 17 00:00:00 2001 From: John Resig Date: Thu, 10 Dec 2009 17:01:04 -0800 Subject: [PATCH] Make sure that dynamically-created elements don't have a parent. Fixes #5638. --- src/core.js | 9 +++++++-- test/unit/core.js | 5 ++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/core.js b/src/core.js index 756117c..7be1512 100644 --- a/src/core.js +++ b/src/core.js @@ -50,7 +50,7 @@ var jQuery = function( selector, context ) { jQuery.fn = jQuery.prototype = { init: function( selector, context ) { - var match, elem, ret, doc; + var match, elem, ret, doc, parent; // Handle $(""), $(null), or $(undefined) if ( !selector ) { @@ -85,7 +85,12 @@ jQuery.fn = jQuery.prototype = { } else { ret = buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes; + parent = ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment; + selector = []; + + while ( parent.firstChild ) { + selector.push( parent.removeChild( parent.firstChild ) ); + } } // HANDLE: $("#id") diff --git a/test/unit/core.js b/test/unit/core.js index ba7fd17..185f77a 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -12,7 +12,7 @@ test("Basic requirements", function() { }); test("jQuery()", function() { - expect(12); + expect(15); // Basic constructor's behavior @@ -51,10 +51,13 @@ test("jQuery()", function() { var code = jQuery(""); equals( code.length, 1, "Correct number of elements generated for code" ); + equals( code.parent().length, 0, "Make sure that the generated HTML has no parent." ); var img = jQuery(""); equals( img.length, 1, "Correct number of elements generated for img" ); + equals( img.parent().length, 0, "Make sure that the generated HTML has no parent." ); var div = jQuery("

"); equals( div.length, 4, "Correct number of elements generated for div hr code b" ); + equals( div.parent().length, 0, "Make sure that the generated HTML has no parent." ); equals( jQuery([1,2,3]).get(1), 2, "Test passing an array to the factory" ); -- 1.7.10.4