Make sure that hide or show don't fail when operating on non-Element nodes. Fixes #6135.
This commit is contained in:
parent
728a70c036
commit
21c0be8496
8
src/effects.js
vendored
8
src/effects.js
vendored
|
@ -28,6 +28,8 @@ jQuery.fn.extend({
|
||||||
} else {
|
} else {
|
||||||
for ( var i = 0, j = this.length; i < j; i++ ) {
|
for ( var i = 0, j = this.length; i < j; i++ ) {
|
||||||
elem = this[i];
|
elem = this[i];
|
||||||
|
|
||||||
|
if ( elem.style ) {
|
||||||
display = elem.style.display;
|
display = elem.style.display;
|
||||||
|
|
||||||
// Reset the inline display of this element to learn if it is
|
// Reset the inline display of this element to learn if it is
|
||||||
|
@ -43,17 +45,21 @@ jQuery.fn.extend({
|
||||||
jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
|
jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set the display of most of the elements in a second loop
|
// Set the display of most of the elements in a second loop
|
||||||
// to avoid the constant reflow
|
// to avoid the constant reflow
|
||||||
for ( i = 0; i < j; i++ ) {
|
for ( i = 0; i < j; i++ ) {
|
||||||
elem = this[i];
|
elem = this[i];
|
||||||
|
|
||||||
|
if ( elem.style ) {
|
||||||
display = elem.style.display;
|
display = elem.style.display;
|
||||||
|
|
||||||
if ( display === "" || display === "none" ) {
|
if ( display === "" || display === "none" ) {
|
||||||
elem.style.display = jQuery._data(elem, "olddisplay") || "";
|
elem.style.display = jQuery._data(elem, "olddisplay") || "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -75,8 +81,10 @@ jQuery.fn.extend({
|
||||||
// Set the display of the elements in a second loop
|
// Set the display of the elements in a second loop
|
||||||
// to avoid the constant reflow
|
// to avoid the constant reflow
|
||||||
for ( i = 0; i < j; i++ ) {
|
for ( i = 0; i < j; i++ ) {
|
||||||
|
if ( this[i].style ) {
|
||||||
this[i].style.display = "none";
|
this[i].style.display = "none";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
4
test/unit/effects.js
vendored
4
test/unit/effects.js
vendored
|
@ -88,6 +88,10 @@ test("show()", function() {
|
||||||
var elem = jQuery(selector, "#show-tests").show();
|
var elem = jQuery(selector, "#show-tests").show();
|
||||||
equals( elem.css("display"), expected, "Show using correct display type for " + selector );
|
equals( elem.css("display"), expected, "Show using correct display type for " + selector );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Make sure that showing or hiding a text node doesn't cause an error
|
||||||
|
jQuery("<div>test</div> text <span>test</span>").show().remove();
|
||||||
|
jQuery("<div>test</div> text <span>test</span>").hide().remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
test("show(Number) - other displays", function() {
|
test("show(Number) - other displays", function() {
|
||||||
|
|
Loading…
Reference in a new issue