JavaScriptのこの行があり、私が見ている動作は、selectedLi
が「スライド」せずに即座に消えることです。これは私が期待した動作ではありません。
selectedLi
が削除される前にスライドするようにするにはどうすればよいですか?
selectedLi.slideUp("normal").remove();
SlideUpのコールバック引数にremoveを呼び出すことで修正できるかもしれませんか?
例えば
selectedLi.slideUp("normal", function() { $(this).remove(); } );
もっと明示的にする必要があります:「これ」(これはうまくいくはずです)と言うのではなく、これを行うべきです:
$("#yourdiv").slideUp(1000, function() {
$(this).remove();
});
最も簡単な方法は、次の例のように、他の人が言ったように、slideUp内の "remove()"関数をパラメーターとして呼び出すことです。
$("#yourdiv").slideUp("normal", function() {
$(this).remove();
});
SlideUpが終了する前にremove()が実行されるのを防ぐために、anonymous function()内で呼び出す必要があります。別の同等の方法は、jQuery関数「promise()」を使用することです。私のような自明のコードが好きな人には良い;)
$("#yourdiv").slideUp("normal").promise().done(function() {
$(this).remove();
});
Promiseを使用すると、複数のアニメーションが終了するまで待つこともできます。例:
selectedLi.slideUp({duration: 5000, queue: false})
.fadeOut({duration: 3000, queue: false})
.promise().done(function() {
selectedLi.remove()
})