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 に答える