3
多くのリスト要素(3000に近い)を持つWebページがあります。私はこれらのためのクリックイベントハンドラとホバリングイベント(jqueryを使用)を添付しています。 IE8であまりにも多くのイベントハンドラを添付するとIE8メモリリーク/パフォーマンスの問題が発生する
$('li').click(function (e){
// do processing here
})
$('li').hover(function (e){
// do processing here for hover in
}, function (e) {
// do processing here hover out
})
、私はいくつかの減速に気づき始めていますし、私の最初の推測では、イベントハンドラの数はメモリリーク/消費の問題を引き起こしているということです。これはChrome、FF、IE9でうまくいきます。
誰かがこの動作に気付いたことはありますか?
jqueryデリゲートを使用すると、イベントハンドラが親コンテナに存在し、各リスト要素には存在しないため、この問題が解決されるとも考えていました。次のようなもの -
$("#somecontainer").delegate('li', 'click', function() {
//do processing for click here.
})
これまでの洞察は大歓迎です。ありがとう!
うん、あなたの直感は正しかった、とkarim79は現在のベストプラクティス(「LI」の後に余分なコンマは、魚に見えますが、私はAPIをダブルチェックしていなかった)提供してきました。 –
@GregPettit - 余分なコンマは、私の誤植で、APIにいくつかの素晴らしい新しい追加されていません:) – karim79
ハハ、OK。 :-) '.on()'の使用を促進するための歓声。あまりにも多くの人々がまだすべてのことの '.live()'を勧めているのを見ている! –