これは、すべてのアニメーションが完了した後ではなく、各アニメーションが完了した後にコールバックslideUp
が呼び出されるためです。非表示の列の は表示されないため、上にスライドするアニメーションを実行する必要はありません。つまり、すぐに完了するため、コールバックがすぐに呼び出されます。div
ただし、コールバックは行全体を削除します。
これに対処するにはいくつかの方法があります。あなたが自分自身を持っていたという考え (とにかく目に見えない s を扱わdiv
ない) は、うまくいくはずの 1 つの方法です。
もう 1 つの方法は、コールバックで行を削除する代わりに、タイムアウトを設定して行を削除することです。
3 番目の方法は、 が残っているかどうかをコールバックでチェックインし、div
残っていない場合にのみ行を削除することです。つまり、次のようなものです。
$(id).find("td div").slideUp(function() {
$(this).remove(); // remove the div itself
if ($(id).find("td div").length == 0) // if none are left
$(id).remove(); // then remove the row
});