2009-08-20 14 views
1

テーブルから行を削除するときに「slideUp」アニメーションを使用するためのjQueryコードを記述しました。アニメーションが滑らかに見えるように、行の各TDの内容をDIVタグでラップし、DIVのslideUp関数を呼び出して、アニメーションの完了時に実際のTDを削除しました。そのコードは次のとおりです:jQueryでテーブル行の削除をアニメ化する

$("tr[id$=" + rowID + "]").children("td").each(function() { 
    $(this).children("div").slideUp(function() { 
     $(this).parent().remove(); 
    });   
}); 

これまでのところ、とても良いです。しかし、私はこのコードは、実際のTRを削除するだけで、その内容なので、私はTRを削除するには、以下の行を追加していないことに気づいた:

$("tr[id$=" + rowID + "]").remove(); 

問題は、私は上記の行を追加した後、アニメーションが終了するということですワーキング。言い換えれば、その行は素晴らしい滑り効果なしで単に消える。なぜこれがそうであり、それをどう回避するのか誰も知っていますか?

+0

でそれをチェックアウト?私は親()の後に追加しました。remove()そしてそれは私のためにうまくいきました。 – seth

+0

ちょっとセト、私は前に行を投稿した直後に行削除行を追加しました。迅速なフィードバックをありがとう! –

答えて

1

すべてのアニメーション要素を含むtrを削除するためです。要素はなく、アニメーションはありません。 slideUpのすべてが同じ時間を要するとすれば、終了コールバックを$(this).parent().remove()から$(this).closest('tr').remove()に変更することで、おそらく逃げることができます。

+0

私はいつもこのサイトのレスポンスのスピードに驚いています。迅速な返信、ホッブズありがとう。私はアニメーション要素を含むtrを削除した結果について何を意味するのか理解していますが、これらの操作は順番に起こったと思います...そうではないと思います。 javascriptの非同期性が毎回私を得ます!あなたのトリックは、まあまあうまくいった。ありがとう! –

+0

さて、実際にはアニメーションの呼び出し(例:slideUp)はタイマーイベントで作業するので非同期ですが、とにかく完了を待たずにアニメーションが適切に始めるチャンス。 – hobbs

関連する問題