Effects: Don't overwrite display:none when .hide()ing hidden elements

Fixes #14848
Closes gh-1548
This commit is contained in:
Richard Gibson
2014-03-20 03:39:36 -04:00
committed by Dave Methvin
parent 5a8f769332
commit 890d441aa5
2 changed files with 23 additions and 5 deletions

15
src/effects.js vendored
View File

@@ -160,11 +160,8 @@ function defaultPrefilter( elem, props, opts ) {
// Set display property to inline-block for height/width
// animations on inline elements that are having width/height animated
display = jQuery.css( elem, "display" );
// Get default display if display is currently "none"
if ( display === "none" ) {
display = defaultDisplay( elem.nodeName );
}
if ( display === "inline" &&
// Test default display if display is currently "none"
if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" &&
jQuery.css( elem, "float" ) === "none" ) {
style.display = "inline-block";
@@ -196,6 +193,10 @@ function defaultPrefilter( elem, props, opts ) {
}
}
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
// Any non-fx value stops us from restoring the original display value
} else {
display = undefined;
}
}
@@ -238,6 +239,10 @@ function defaultPrefilter( elem, props, opts ) {
}
}
}
// If this is a noop like .hide().hide(), restore an overwritten display value
} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
style.display = display;
}
}