1

slideDown()在我之前停止(或slideUp())中途之后,如何让动画继续?我相信它不会的事实与slideDown()仅对最初隐藏的元素起作用的事实有关。这些动画中的元素并没有隐藏。

有没有办法规避这种行为,让 jQuery 在停止后继续动画?(编辑:或者如果您知道使用的替代解决方案slideDown();当然也可以)

请也查看我的 jsfiddle 示例,看看我在做什么。


至于一些背景信息:
我想为表单验证消息实现这种行为。我单独将它们向下滑动,然后在延迟后再次向上滑动。但是,如果用户重新提交表单的速度比消息消失的速度更快,并且某些“新”消息已经存在并且尚未完成动画(向上或向下滑动),我想再次将它们向下滑动。

4

3 回答 3

1

指示是否在slideDown中完成.data()。如果由于该stop功能没有完成,hideslideDown又一次。

演示

$( 'div' ).hide().slideDown(1000, function() {
    $(this).data("completed", "completed");
});
setTimeout( function() {
    $( 'div' ).stop( true );
}, 500 );
setTimeout( function() {
    if ($('div').data("completed") !== "completed") {
        $( 'div' ).hide().slideDown();
    }
}, 2000 );
于 2013-02-10T07:36:03.220 回答
0

您要做的是在动画之前使用 .stop() ,例如

$('#element').stop().slideUp();

在http://api.jquery.com/stop/查看 jQuery 的示例

如果您需要更多帮助或澄清,请告诉我:)

于 2013-02-08T07:26:32.050 回答
0

这样的东西?

$( 'div' ).hide().slideDown( 1000 );
setTimeout( function() {
    $( 'div' ).stop( true );
    $( 'div' ).hide().slideDown(1000);
}, 500 );

对于slideUp()在中途,删除hide()

$( 'div' ).hide().slideDown( 1000 );
setTimeout( function() {
    $( 'div' ).stop( true );
    $( 'div' ).slideUp(1000);
}, 500 );
于 2013-02-10T07:44:31.703 回答