1

約1000個のdom要素を含むこのようなものを手に入れました

  <table id="tableId">
    <tr class="selected"><td>Text 1</td></tr>
    <tr><td>Text 2</td></tr>
    ...
    <tr><td>Text 500</td></tr>
  </table>

問題は、次のようなことをする必要があることです:

y = new selected tr;
$("#tableId").find("tr").removeClass("selected").eq(y).addClass("selected");

ここでの問題は、処理に約 600 ミリ秒かかるセレクター自体です。これは、私たちが行っていることには長すぎます。

私が使用しているマシンはブラウザopera10を使用しており、Linuxで実行されているのは450Mhzだけです!
問題はマシンがそれほど遅いことにあると思いますか?

セレクターを改善する方法はありますか?

4

4 に答える 4

1

プログラミングロジックを介してそれを行う方法を説明します。

  • 「選択した要素」への参照を保存します
  • 選択を解除します
  • 新しいものを選択してください

現在選択されている要素を保存することにより、選択された要素を見つけるために何トンものtr要素をループする必要はありません。

おそらく、現在選択されているオプションに「currentlySelectedTr。idルックアップはWebブラウザによって実際に最適化されている」というIDを指定する方が簡単なオプションです。

于 2012-07-02T16:17:10.437 に答える
1

次の方法でスクリプトを改善できます。

$("#tableId tr").removeClass("selected").eq(y).addClass("selected");
于 2012-07-02T16:14:03.133 に答える
0

次のようにセレクターをキャッシュする必要があります。

var myTableRow = $('#tableId').find('tr');

次に、クラスを切り替えるには、次のようにします。

myTableRow.toggleClass('selected');

- 編集 -

最初に、次のようにキャッシュされたセレクターを作成しました。

var myTableRow = $('#tableId tr');

しかし、Scott Kosman によるこの 24 通りの記事を読んだ後、 .find()メソッドの方が高速であることがわかりました。

于 2012-07-02T16:13:54.187 に答える