Skip to content
Permalink
Browse files

Fix #13310. Get the right display value for disconnected nodes. Close g…

  • Loading branch information...
markelog authored and dmethvin committed Feb 1, 2013
1 parent 219a193 commit 8226666b1344b27f22f3f0699586054a20718ad3
Showing with 39 additions and 4 deletions.
  1. +13 −4 src/css.js
  2. +2 −0 test/data/testsuite.css
  3. +1 −0 test/index.html
  4. +23 −0 test/unit/css.js
@@ -51,7 +51,7 @@ function isHidden( elem, el ) {
}

function showHide( elements, show ) {
var elem,
var display, elem, hidden,
values = [],
index = 0,
length = elements.length;
@@ -61,11 +61,13 @@ function showHide( elements, show ) {
if ( !elem.style ) {
continue;
}

values[ index ] = jQuery._data( elem, "olddisplay" );
display = elem.style.display;
if ( show ) {
// Reset the inline display of this element to learn if it is
// being hidden by cascaded rules or not
if ( !values[ index ] && elem.style.display === "none" ) {
if ( !values[ index ] && display === "none" ) {
elem.style.display = "";
}

@@ -75,8 +77,15 @@ function showHide( elements, show ) {
if ( elem.style.display === "" && isHidden( elem ) ) {
values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
}
} else if ( !values[ index ] && !isHidden( elem ) ) {
jQuery._data( elem, "olddisplay", jQuery.css( elem, "display" ) );
} else {

if ( !values[ index ] ) {
hidden = isHidden( elem );

if ( display && display !== "none" || !hidden ) {
jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
}
}
}
}

@@ -151,3 +151,5 @@ section { background:#f0f; display:block; }

/* #11971 */
#foo { background: url(1x1.jpg) right bottom no-repeat; }

#display { display: list-item !important; }
@@ -318,6 +318,7 @@
</div>

<div id="fx-tests"></div>
<span id="display"></span>
</div>
</div>
</dl>
@@ -1010,4 +1010,27 @@ asyncTest( "Clearing a Cloned Element's Style Shouldn't Clear the Original Eleme
window.setTimeout( start, 1000 );
});

asyncTest( "Make sure initialized display value for disconnected nodes is correct (#13310)", 4, function() {
var display = jQuery("#display").css("display"),
div = jQuery("<div/>");

equal( div.css( "display", "inline" ).hide().show().appendTo("body").css( "display" ), "inline", "Initialized display value has returned" );
div.remove();

div.css( "display", "none" ).hide();
equal( jQuery._data( div[ 0 ], "olddisplay" ), undefined, "olddisplay is undefined after hiding a detached and hidden element" );
div.remove();

div.css( "display", "inline-block" ).hide().appendTo("body").fadeIn(function() {
equal( div.css( "display" ), "inline-block", "Initialized display value has returned" );
div.remove();

start();
});

equal( jQuery._data( jQuery("#display").css( "display", "inline" ).hide()[ 0 ], "olddisplay" ), display,
"display: * !Important value should used as initialized display" );
jQuery._removeData( jQuery("#display")[ 0 ] );
});

}

0 comments on commit 8226666

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