私が書いている Web アプリケーションには、グリッドを作成する一連の div があります。グリッドは、ユーザー入力に基づいて、X div x Y div です。jQueryホバー機能を使用して、一定距離内にあるすべての周囲のdivの背景色を変更したいと思います。基本的に、div にカーソルを合わせると、4 行 4 列以内のすべての div も背景色を変更する必要があります。私はこれをうまく機能させることができますが、グリッドが 32 x 128 div になると、実際のパフォーマンスの問題が発生し、ホバー効果がマウスよりも著しく遅れます。グリッドが30 x 30のようなものである場合、問題は存在しないため、DOM内に同様のdivが大量にあるためであるとほぼ確信しています.
これは私のhtmlの基本的な構造です:
<div class="table_area">
<div class="table_row" id="row-0">
<div class="cap" data-row="0" data-column="0"></div>
<div class="cap" data-row="0" data-column="1"></div>
...
</div>
<div class="table_row" id="row-1">
<div class="cap" data-row="1" data-column="0"></div>
<div class="cap" data-row="1" data-column="1"></div>
...
</div>
...
</div>
DOM の検索を高速化するために、各行を配列に追加しました。したがって、$('div.table_row[data-row="0"]')
になりますarr[0]
。そのため、行 8 にカーソルを合わせると、必要な divdiv
のみをチェックarr[4]
します。arr[12]
かなりの量の検索を排除しているので、これによりプロセスがかなり高速化されると思いますが、ホバーにはまだ非常に顕著な遅延があります.
これを設定する方法に明らかに間違っていることはありますか? 問題があれば、最新バージョンの Chrome を使用しています。