Commit bea5ecbb authored by Oleg's avatar Oleg Committed by Dave Methvin

Fix #10416. Don't trust computed styles on detached elements. Close gh-941.

parent 5be4c10c
...@@ -44,12 +44,14 @@ function vendorPropName( style, name ) { ...@@ -44,12 +44,14 @@ function vendorPropName( style, name ) {
} }
function isHidden( elem, el ) { function isHidden( elem, el ) {
// isHidden might be called from jQuery#filter function;
// in that case, element will be second argument
elem = el || elem; elem = el || elem;
return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); return curCSS( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
} }
function showHide( elements, show ) { function showHide( elements, show ) {
var elem, display, var elem,
values = [], values = [],
index = 0, index = 0,
length = elements.length; length = elements.length;
...@@ -73,12 +75,8 @@ function showHide( elements, show ) { ...@@ -73,12 +75,8 @@ function showHide( elements, show ) {
if ( elem.style.display === "" && isHidden( elem ) ) { if ( elem.style.display === "" && isHidden( elem ) ) {
values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
} }
} else { } else if ( !values[ index ] && !isHidden( elem ) ) {
display = curCSS( elem, "display" ); jQuery._data( elem, "olddisplay", curCSS( elem, "display" ) );
if ( !values[ index ] && display !== "none" ) {
jQuery._data( elem, "olddisplay", display );
}
} }
} }
......
...@@ -504,12 +504,10 @@ test("show() resolves correct default display #8099", function() { ...@@ -504,12 +504,10 @@ test("show() resolves correct default display #8099", function() {
dfn8099.remove(); dfn8099.remove();
}); });
test( "show() resolves correct default display, detached nodes (#10006)", function(){ test( "show() resolves correct default display for detached nodes", function(){
// Tests originally contributed by Orkel in expect( 13 );
// https://github.com/jquery/jquery/pull/458
expect( 11 );
var div, span; var div, span, tr, trDisplay;
div = jQuery("<div class='hidden'>"); div = jQuery("<div class='hidden'>");
div.show().appendTo("#qunit-fixture"); div.show().appendTo("#qunit-fixture");
...@@ -559,6 +557,18 @@ test( "show() resolves correct default display, detached nodes (#10006)", functi ...@@ -559,6 +557,18 @@ test( "show() resolves correct default display, detached nodes (#10006)", functi
div.show().appendTo("#qunit-fixture"); div.show().appendTo("#qunit-fixture");
equal( div.css("display"), "inline", "Make sure that element has same display when it was created." ); equal( div.css("display"), "inline", "Make sure that element has same display when it was created." );
div.remove(); div.remove();
tr = jQuery("<tr/>");
jQuery("#table").append( tr );
trDisplay = tr.css( "display" );
tr.detach().hide().show();
equal( tr[ 0 ].style.display, trDisplay, "For detached tr elements, display should always be like for attached trs" );
tr.remove();
span = span = jQuery("<span/>").hide().show();
equal( span[ 0 ].style.display, "inline", "For detached span elements, display should always be inline" );
span.remove();
}); });
test("show() resolves correct default display #10227", function() { test("show() resolves correct default display #10227", function() {
......
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