mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #13483. Let slideDown() work after stop(). Close gh-1205.
This commit is contained in:
parent
2c7b1b8502
commit
ea5c22ec12
@ -166,3 +166,4 @@ Dmitry Gusev <dmitry.gusev@gmail.com>
|
|||||||
Michał Gołębiowski <m.goleb@gmail.com>
|
Michał Gołębiowski <m.goleb@gmail.com>
|
||||||
Steven Benner <admin@stevenbenner.com>
|
Steven Benner <admin@stevenbenner.com>
|
||||||
Li Xudong <istonelee@gmail.com>
|
Li Xudong <istonelee@gmail.com>
|
||||||
|
Renato Oliveira dos Santos <ros3@cin.ufpe.br>
|
||||||
|
10
src/effects.js
vendored
10
src/effects.js
vendored
@ -304,21 +304,29 @@ function defaultPrefilter( elem, props, opts ) {
|
|||||||
|
|
||||||
|
|
||||||
// show/hide pass
|
// show/hide pass
|
||||||
|
dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
|
||||||
for ( index in props ) {
|
for ( index in props ) {
|
||||||
value = props[ index ];
|
value = props[ index ];
|
||||||
if ( rfxtypes.exec( value ) ) {
|
if ( rfxtypes.exec( value ) ) {
|
||||||
delete props[ index ];
|
delete props[ index ];
|
||||||
toggle = toggle || value === "toggle";
|
toggle = toggle || value === "toggle";
|
||||||
if ( value === ( hidden ? "hide" : "show" ) ) {
|
if ( value === ( hidden ? "hide" : "show" ) ) {
|
||||||
|
|
||||||
|
// 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[ index ] !== undefined ) {
|
||||||
|
hidden = true;
|
||||||
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
handled.push( index );
|
handled.push( index );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
length = handled.length;
|
length = handled.length;
|
||||||
if ( length ) {
|
if ( !length ) {
|
||||||
dataShow = data_priv.get( elem, "fxshow" ) || data_priv.access( elem, "fxshow", {} );
|
dataShow = data_priv.get( elem, "fxshow" ) || data_priv.access( elem, "fxshow", {} );
|
||||||
|
} else {
|
||||||
if ( "hidden" in dataShow ) {
|
if ( "hidden" in dataShow ) {
|
||||||
hidden = dataShow.hidden;
|
hidden = dataShow.hidden;
|
||||||
}
|
}
|
||||||
|
60
test/unit/effects.js
vendored
60
test/unit/effects.js
vendored
@ -2033,4 +2033,64 @@ test( ".finish() calls finish of custom queue functions", function() {
|
|||||||
div.remove();
|
div.remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
asyncTest( "slideDown() after stop() (#13483)", 2, function() {
|
||||||
|
var ul = jQuery( "<ul style='height: 100px;display: block'></ul>" ),
|
||||||
|
origHeight = ul.height();
|
||||||
|
|
||||||
|
// First test. slideUp() -> stop() in the middle -> slideDown() until the end
|
||||||
|
ul.slideUp( 1000 );
|
||||||
|
setTimeout( function() {
|
||||||
|
ul.stop( true );
|
||||||
|
ul.slideDown( 1, function() {
|
||||||
|
equal( ul.height(), origHeight, "slideDown() after interrupting slideUp() with stop(). Height must be in original value" );
|
||||||
|
|
||||||
|
// Second test. slideDown() -> stop() in the middle -> slideDown() until the end
|
||||||
|
ul.slideUp( 1, function() {
|
||||||
|
ul.slideDown( 1000 );
|
||||||
|
setTimeout( function() {
|
||||||
|
ul.stop( true );
|
||||||
|
ul.slideDown( 1, function() {
|
||||||
|
equal( ul.height(), origHeight, "slideDown() after interrupting slideDown() with stop(). Height must be in original value" );
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
ul.remove();
|
||||||
|
start();
|
||||||
|
});
|
||||||
|
}, 500 );
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}, 500 );
|
||||||
|
});
|
||||||
|
|
||||||
|
asyncTest( "fadeIn() after stop() (related to #13483)", 2, function() {
|
||||||
|
var ul = jQuery( "<ul style='height: 100px;display: block; opacity: 1'></ul>" ),
|
||||||
|
origOpacity = ul.css( "opacity" );
|
||||||
|
|
||||||
|
// First test. fadeOut() -> stop() in the middle -> fadeIn() until the end
|
||||||
|
ul.fadeOut( 1000 );
|
||||||
|
setTimeout( function() {
|
||||||
|
ul.stop( true );
|
||||||
|
ul.fadeIn( 1, function() {
|
||||||
|
equal( ul.css( "opacity" ), origOpacity, "fadeIn() after interrupting fadeOut() with stop(). Opacity must be in original value" );
|
||||||
|
|
||||||
|
// Second test. fadeIn() -> stop() in the middle -> fadeIn() until the end
|
||||||
|
ul.fadeOut( 1, function() {
|
||||||
|
ul.fadeIn( 1000 );
|
||||||
|
setTimeout( function() {
|
||||||
|
ul.stop( true );
|
||||||
|
ul.fadeIn( 1, function() {
|
||||||
|
equal( ul.css("opacity"), origOpacity, "fadeIn() after interrupting fadeIn() with stop(). Opacity must be in original value" );
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
ul.remove();
|
||||||
|
start();
|
||||||
|
});
|
||||||
|
}, 500 );
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}, 500 );
|
||||||
|
});
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
Loading…
Reference in New Issue
Block a user