Commit 65ebf57c authored by John Resig's avatar John Resig

Make sure that dynamically-created elements don't have a parent. Fixes #5638.

parent 1bac6165
...@@ -50,7 +50,7 @@ var jQuery = function( selector, context ) { ...@@ -50,7 +50,7 @@ var jQuery = function( selector, context ) {
jQuery.fn = jQuery.prototype = { jQuery.fn = jQuery.prototype = {
init: function( selector, context ) { init: function( selector, context ) {
var match, elem, ret, doc; var match, elem, ret, doc, parent;
// Handle $(""), $(null), or $(undefined) // Handle $(""), $(null), or $(undefined)
if ( !selector ) { if ( !selector ) {
...@@ -85,7 +85,12 @@ jQuery.fn = jQuery.prototype = { ...@@ -85,7 +85,12 @@ jQuery.fn = jQuery.prototype = {
} else { } else {
ret = buildFragment( [ match[1] ], [ doc ] ); 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") // HANDLE: $("#id")
......
...@@ -12,7 +12,7 @@ test("Basic requirements", function() { ...@@ -12,7 +12,7 @@ test("Basic requirements", function() {
}); });
test("jQuery()", function() { test("jQuery()", function() {
expect(12); expect(15);
// Basic constructor's behavior // Basic constructor's behavior
...@@ -51,10 +51,13 @@ test("jQuery()", function() { ...@@ -51,10 +51,13 @@ test("jQuery()", function() {
var code = jQuery("<code/>"); var code = jQuery("<code/>");
equals( code.length, 1, "Correct number of elements generated for code" ); 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("<img/>"); var img = jQuery("<img/>");
equals( img.length, 1, "Correct number of elements generated for img" ); 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("<div/><hr/><code/><b/>"); var div = jQuery("<div/><hr/><code/><b/>");
equals( div.length, 4, "Correct number of elements generated for div hr code b" ); 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" ); equals( jQuery([1,2,3]).get(1), 2, "Test passing an array to the factory" );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment