web-dev-qa-db-ja.com

jQuery slideUp()。remove()は、削除が発生する前にslideUpアニメーションを表示しないようです

JavaScriptのこの行があり、私が見ている動作は、selectedLiが「スライド」せずに即座に消えることです。これは私が期待した動作ではありません。

selectedLiが削除される前にスライドするようにするにはどうすればよいですか?

selectedLi.slideUp("normal").remove();
89
Eric Schoonover

SlideUpのコールバック引数にremoveを呼び出すことで修正できるかもしれませんか?

例えば

selectedLi.slideUp("normal", function() { $(this).remove(); } );
188
seanb

もっと明示的にする必要があります:「これ」(これはうまくいくはずです)と言うのではなく、これを行うべきです:

$("#yourdiv").slideUp(1000, function() {
    $(this).remove();
});
15
Blake

最も簡単な方法は、次の例のように、他の人が言ったように、slideUp内の "remove()"関数をパラメーターとして呼び出すことです。

$("#yourdiv").slideUp("normal", function() {
    $(this).remove();
});

SlideUpが終了する前にremove()が実行されるのを防ぐために、anonymous function()内で呼び出す必要があります。別の同等の方法は、jQuery関数「promise()」を使用することです。私のような自明のコードが好きな人には良い;)

$("#yourdiv").slideUp("normal").promise().done(function() {
    $(this).remove();
});
6
xaviqv

Promiseを使用すると、複数のアニメーションが終了するまで待つこともできます。例:

selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
    selectedLi.remove()
})
2
famousgarkin