次のようなアイテムの視覚的なリストがあります。
http://jsfiddle.net/viatropos/XCe3T/1/
実際のアプリでは、合計 200 個のアイテムしかロードしていません。しかし問題は、click
たった 200 個の項目がある場合でも、イベントがハンドラーを呼び出すのにほぼ 1 秒かかることです。イベント コールバックはmouseover
、リスト内の項目数に関係なくすぐに実行されます。
私の質問は、ページ上に要素がいくつあっても、デリゲート メソッドは同じように高速であるべきではないということです。私がやっていることはこれだけです:
$("body").delegate("a", "click", function(event) { console.log($(event.target).get(0)); return false; }
上記の jsfiddle の例と Web インスペクタに移動し、レンダリングされた結果のリンクをクリックすると、さらに 200 個の要素が追加されます。追加する要素が増えるほど、速度が低下することに注意してください。奇妙なことに、6000 アイテムから開始すると、2000 から開始して 6000 に達するまで一度に 200 ずつ追加する場合よりも、デリゲート/クリックの実行がはるかに高速になります。
イベントdelegate
に対するjQueryのメソッドのパフォーマンスを向上させるにはどうすればよいですか? click
css がこれを遅くしている可能性はありますか (スタイルが多すぎるか、レイアウトが最適化されていない可能性があります)。