Fix #13310. Get the right display value for disconnected nodes. Close gh-1156.

This commit is contained in:
Oleg
2013-02-01 17:22:08 +04:00
committed by Dave Methvin
parent a30785a4dd
commit f3db084f7c
4 changed files with 39 additions and 4 deletions

View File

@@ -54,7 +54,7 @@ function getStyles( elem ) {
}
function showHide( elements, show ) {
var elem,
var display, elem, hidden,
values = [],
index = 0,
length = elements.length;
@@ -64,11 +64,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 = "";
}
@@ -78,8 +80,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" ) );
}
}
}
}