mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Effects: Don't overwrite display:none when .hide()ing hidden elements
Fixes #14848
Closes gh-1548
(cherry picked from commit 890d441aa5
)
Conflicts:
src/effects.js
This commit is contained in:
parent
6dcca6da36
commit
80cf965e02
15
src/effects.js
vendored
15
src/effects.js
vendored
@ -160,11 +160,8 @@ function defaultPrefilter( elem, props, opts ) {
|
|||||||
// Set display property to inline-block for height/width
|
// Set display property to inline-block for height/width
|
||||||
// animations on inline elements that are having width/height animated
|
// animations on inline elements that are having width/height animated
|
||||||
display = jQuery.css( elem, "display" );
|
display = jQuery.css( elem, "display" );
|
||||||
dDisplay = defaultDisplay( elem.nodeName );
|
// Test default display if display is currently "none"
|
||||||
if ( display === "none" ) {
|
if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" &&
|
||||||
display = dDisplay;
|
|
||||||
}
|
|
||||||
if ( display === "inline" &&
|
|
||||||
jQuery.css( elem, "float" ) === "none" ) {
|
jQuery.css( elem, "float" ) === "none" ) {
|
||||||
|
|
||||||
// inline-level elements accept inline-block;
|
// inline-level elements accept inline-block;
|
||||||
@ -204,6 +201,10 @@ function defaultPrefilter( elem, props, opts ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
||||||
|
|
||||||
|
// Any non-fx value stops us from restoring the original display value
|
||||||
|
} else {
|
||||||
|
display = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,6 +246,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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
13
test/unit/effects.js
vendored
13
test/unit/effects.js
vendored
@ -1672,6 +1672,19 @@ test( "hide, fadeOut and slideUp called on element width height and width = 0 sh
|
|||||||
this.clock.tick( 400 );
|
this.clock.tick( 400 );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test( "hide should not leave hidden inline elements visible (#14848)", 2, function() {
|
||||||
|
var el = jQuery("#simon1");
|
||||||
|
|
||||||
|
el.hide( 1, function() {
|
||||||
|
equal( el.css( "display" ), "none", "hidden" );
|
||||||
|
el.hide( 1, function() {
|
||||||
|
equal( el.css( "display" ), "none", "still hidden" );
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.clock.tick( 100 );
|
||||||
|
});
|
||||||
|
|
||||||
test( "Handle queue:false promises", 10, function() {
|
test( "Handle queue:false promises", 10, function() {
|
||||||
var foo = jQuery( "#foo" ).clone().andSelf(),
|
var foo = jQuery( "#foo" ).clone().andSelf(),
|
||||||
step = 1;
|
step = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user