Skip to content
Permalink
Browse files

Only try to wrap the element if it's not disconnected, fixed #3828.

  • Loading branch information
jeresig committed Jan 12, 2009
1 parent 0c97178 commit ea7837776022fe9f2ccdf00ede30728e6f24d919
Showing with 21 additions and 14 deletions.
  1. +15 −13 src/core.js
  2. +6 −1 test/unit/core.js
@@ -206,20 +206,22 @@ jQuery.fn = jQuery.prototype = {
},

wrapAll: function( html ) {
if ( this[0] )
if ( this[0] ) {
// The elements to wrap the target around
jQuery( html, this[0].ownerDocument )
.clone()
.insertBefore( this[0] )
.map(function(){
var elem = this;

while ( elem.firstChild )
elem = elem.firstChild;

return elem;
})
.append(this);
var wrap = jQuery( html, this[0].ownerDocument ).clone();

if ( this[0].parentNode )
wrap.insertBefore( this[0] );

wrap.map(function(){
var elem = this;

while ( elem.firstChild )
elem = elem.firstChild;

return elem;
}).append(this);
}

return this;
},
@@ -751,7 +751,7 @@ test("text()", function() {
});

test("wrap(String|Element)", function() {
expect(8);
expect(10);
var defaultText = 'Try them out:'
var result = jQuery('#first').wrap('<div class="red"><span></span></div>').text();
equals( defaultText, result, 'Check for wrapping of on-the-fly html' );
@@ -776,6 +776,11 @@ test("wrap(String|Element)", function() {
j.wrap("<i></i>");
equals( jQuery("#nonnodes > i").length, 3, "Check node,textnode,comment wraps ok" );
equals( jQuery("#nonnodes > i").text(), j.text() + j[1].nodeValue, "Check node,textnode,comment wraps doesn't hurt text" );

// Try wrapping a disconnected node
j = jQuery("<label/>").wrap("<li/>");
equals( j[0].nodeName, "LABEL", "Element is a label" );
equals( j[0].parentNode.nodeName, "LI", "Element has been wrapped" );
});

test("wrapAll(String|Element)", function() {

0 comments on commit ea78377

Please sign in to comment.
You can’t perform that action at this time.