0

15 列と約 2000 以上のレコードを持つ 1 つのテーブルがあります。ここで、最後の 5 列を非表示/表示したいと考えています。そのために、次の jQuery ステートメントを使用します。

    $("table.border-box td.disp").toggle();

「disp」クラスを持つ td は、表のセルを非表示/表示します。

ただし、これにより、Browser with following stop script エラーが発生します。

このページのスクリプトがビジーであるか、応答を停止している可能性があります。ここでスクリプトを停止するか、スクリプトが完了するかどうかを確認し続けることができます。

Script: http://localhost:8080/XXX/resources/js/jquery/jquery-1.6.4.js:4055

これを最適化し、ブラウザのエラーを解決するにはどうすればよいですか。(ブラウザ: Mozilla Firefox:15.0)

4

3 に答える 3

1

試してみてください:

$("table.border-box").find(".disp").toggle();

また、次のように、別のときに使用するためにキャッシュします。

tds = $("table.border-box").find(".disp");//only do expensive operation once

tds.toggle();
...
...
tds.toggle();

このようにすると、複雑なセレクターに使用されるパフォーマンスの低下を回避できます。querySelectorAll()。class」のような単純なセレクターをネストして、jqueryがgetElementsByTagName()内部でより多くのパフォーマンスを使用するようにすることをお勧めします。

明らかに、これで十分でない場合は、他の回答が示唆するように、コードをリファクタリングする必要があります。

于 2012-10-12T12:12:16.823 に答える
1

あなたが共有したコードはまったく問題ありません。

これをテストするために JS Fiddle を作成しました: http://jsfiddle.net/3z7Ze/

列を表示/非表示にする前に、レコードが完全に読み込まれていることを確認してください。また、その時点で実行されている他のスクリプトはありません (表示/非表示機能と競合する可能性があります)。

于 2012-10-12T12:15:03.717 に答える
0

他の人がすでに述べたように、結果を複数のページに分割する必要があります。しかし、これができない場合は、別の方法として、各行を手動で反復処理し、非同期でトグル イベントを発生させるという方法があります。

于 2012-10-12T12:07:22.997 に答える