0

ajaxを使用して情報のテーブルをロードするページがあります。テーブルがロードされたら、jQueryを使用してテーブルの行にいくつかのイベントハンドラーを接続します。

そのページから、ユーザーはそのテーブルを更新することができます。テーブルを更新するためのjQueryコードは次のようになります。

    $.post("/myurl", { id: 0}, 
        function (d) 
        { 
            $("tblWrapper").html(d);

            //Wire events
            $("table tr", $("tblWrapper")).click(function (e) { ... });
            ...etc
        }, "text");

これを数回行った後、IE8でスクロールやアニメーションを実行しようとすると、ページの応答が非常に遅くなることに気付きました。

私の質問は、私が間違っていることは、それがどんどん遅くなるということです。新しいhtmlおよび新しいハンドラーに置き換える前に、古いhtml / eventハンドラーをクリーンアップできますか?私はJSエンジンがそれを自動的に行うかもしれないと思っていました。たぶんそれはそうです、そしてそれはクリーンアップをするのがただ遅いです、それは私にはわかりません。

IExplorerのCPU時間が50%程度になることに気づきました。

助けていただければ幸いです。

4

2 に答える 2

0

ここで問題の良い議論と潜在的な解決策:

http://forum.jquery.com/topic/performance-issues-using-ajax-async

于 2010-03-04T21:39:01.967 に答える
0

これが問題かどうかはわかりませんが、同じ行を何度も追加し続けますか? テーブル内の行数が増えるため、処理が遅くなる可能性があります。

$("table tr").remove() のようなことをして、行をクリアできます。

于 2010-03-04T21:39:50.530 に答える