mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #14318: Cherry-pick interrupted animation fix from master ea5c22ec12
This commit is contained in:
parent
8e6e239256
commit
5cd6868365
8
src/effects.js
vendored
8
src/effects.js
vendored
@ -337,7 +337,13 @@ function defaultPrefilter( elem, props, opts ) {
|
||||
delete props[ prop ];
|
||||
toggle = toggle || value === "toggle";
|
||||
if ( value === ( hidden ? "hide" : "show" ) ) {
|
||||
continue;
|
||||
|
||||
// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
|
||||
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
||||
hidden = true;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
||||
}
|
||||
|
19
test/unit/effects.js
vendored
19
test/unit/effects.js
vendored
@ -2192,7 +2192,8 @@ asyncTest( ".finish() is applied correctly when multiple elements were animated
|
||||
});
|
||||
|
||||
asyncTest( "slideDown() after stop() (#13483)", 2, function() {
|
||||
var ul = jQuery( "<ul style='height: 100px;display: block'></ul>" ),
|
||||
var ul = jQuery( "<ul style='height: 100px; display: block;'></ul>" )
|
||||
.appendTo("#qunit-fixture"),
|
||||
origHeight = ul.height();
|
||||
|
||||
// First test. slideUp() -> stop() in the middle -> slideDown() until the end
|
||||
@ -2221,24 +2222,28 @@ asyncTest( "slideDown() after stop() (#13483)", 2, function() {
|
||||
}, 500 );
|
||||
});
|
||||
|
||||
asyncTest( "fadeIn() after stop() (related to #13483)", 2, function() {
|
||||
var ul = jQuery( "<ul style='height: 100px;display: block; opacity: 1'></ul>" ),
|
||||
asyncTest( "fadeIn() after stop() (related to #13483)", 5, function() {
|
||||
var ul = jQuery( "<ul style='height: 100px; display: block;'></ul>" )
|
||||
.appendTo("#qunit-fixture").css( "opacity", 1 ),
|
||||
origOpacity = ul.css( "opacity" );
|
||||
|
||||
// First test. fadeOut() -> stop() in the middle -> fadeIn() until the end
|
||||
ul.fadeOut( 1000 );
|
||||
ul.fadeOut( 2000 );
|
||||
setTimeout( function() {
|
||||
ul.stop( true );
|
||||
ok( ul.css( "opacity" ) > 0, "fadeOut() interrupted" );
|
||||
ul.fadeIn( 1, function() {
|
||||
equal( ul.css( "opacity" ), origOpacity, "fadeIn() after interrupting fadeOut() with stop(). Opacity must be in original value" );
|
||||
equal( ul.css( "opacity" ), origOpacity, "fadeIn() restored original opacity after interrupted fadeOut()" );
|
||||
|
||||
// Second test. fadeIn() -> stop() in the middle -> fadeIn() until the end
|
||||
ul.fadeOut( 1, function() {
|
||||
ul.fadeIn( 1000 );
|
||||
equal( ul.css( "opacity" ), origOpacity, "fadeOut() completed" );
|
||||
ul.fadeIn( 2000 );
|
||||
setTimeout( function() {
|
||||
ul.stop( true );
|
||||
ok( ul.css( "opacity" ) < origOpacity, "fadeIn() interrupted" );
|
||||
ul.fadeIn( 1, function() {
|
||||
equal( ul.css("opacity"), origOpacity, "fadeIn() after interrupting fadeIn() with stop(). Opacity must be in original value" );
|
||||
equal( ul.css("opacity"), origOpacity, "fadeIn() restored original opacity after interrupted fadeIn()" );
|
||||
|
||||
// Cleanup
|
||||
ul.remove();
|
||||
|
Loading…
Reference in New Issue
Block a user