Only try to wrap the element if it's not disconnected, fixed #3828.
This commit is contained in:
parent
0c97178553
commit
ea78377760
24
src/core.js
24
src/core.js
|
@ -206,20 +206,22 @@ jQuery.fn = jQuery.prototype = {
|
||||||
},
|
},
|
||||||
|
|
||||||
wrapAll: function( html ) {
|
wrapAll: function( html ) {
|
||||||
if ( this[0] )
|
if ( this[0] ) {
|
||||||
// The elements to wrap the target around
|
// The elements to wrap the target around
|
||||||
jQuery( html, this[0].ownerDocument )
|
var wrap = jQuery( html, this[0].ownerDocument ).clone();
|
||||||
.clone()
|
|
||||||
.insertBefore( this[0] )
|
|
||||||
.map(function(){
|
|
||||||
var elem = this;
|
|
||||||
|
|
||||||
while ( elem.firstChild )
|
if ( this[0].parentNode )
|
||||||
elem = elem.firstChild;
|
wrap.insertBefore( this[0] );
|
||||||
|
|
||||||
return elem;
|
wrap.map(function(){
|
||||||
})
|
var elem = this;
|
||||||
.append(this);
|
|
||||||
|
while ( elem.firstChild )
|
||||||
|
elem = elem.firstChild;
|
||||||
|
|
||||||
|
return elem;
|
||||||
|
}).append(this);
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
|
@ -751,7 +751,7 @@ test("text()", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("wrap(String|Element)", function() {
|
test("wrap(String|Element)", function() {
|
||||||
expect(8);
|
expect(10);
|
||||||
var defaultText = 'Try them out:'
|
var defaultText = 'Try them out:'
|
||||||
var result = jQuery('#first').wrap('<div class="red"><span></span></div>').text();
|
var result = jQuery('#first').wrap('<div class="red"><span></span></div>').text();
|
||||||
equals( defaultText, result, 'Check for wrapping of on-the-fly html' );
|
equals( defaultText, result, 'Check for wrapping of on-the-fly html' );
|
||||||
|
@ -776,6 +776,11 @@ test("wrap(String|Element)", function() {
|
||||||
j.wrap("<i></i>");
|
j.wrap("<i></i>");
|
||||||
equals( jQuery("#nonnodes > i").length, 3, "Check node,textnode,comment wraps ok" );
|
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" );
|
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() {
|
test("wrapAll(String|Element)", function() {
|
||||||
|
|
Loading…
Reference in a new issue