最近、jQueryのlivequeryプラグインは、イベントの委任を使用せず、すべてのバインド可能なイベントをバインドし、変更のたびにDOM全体を再チェックするため、非常に無駄になる可能性があることを発見しました。
誰かがlivequeryと.live()を使用したベストプラクティスに関するより多くの情報や提案を持っているなら、私は非常に感謝します
のようなプラグインが実際に必要になることはめったにありませんlivequery
。おそらく、本当に必要なのは、変更できない他のjQueryコードによって行われたDOMへの変更に対応する必要がある場合だけです。
.live()
イベント委任を使用しますが、レベルdocument
で実行します。つまり、ページ上のすべてのイベントを処理して、イベントタイプごとに提供されるセレクターと一致するかどうかを確認する必要があります。
これらの両方のより良い代替(IMO)は、と同じようにイベント委任を使用するdelegate()
(docs).live()
メソッドですが、ページの特定の部分に制限することができます。
$('#someContainer').delegate('a.someButton', 'click', function() {
// do something when an "a.someButton" inside "#someContainer" is clicked
});
イベント委任メソッドは、DOMの変更ではなく、ブラウザーのイベントに応答することに注意してください。行ったDOMの変更に基づいてコードを実行する必要がある場合は、DOMに変更を加えたときにそのコードを実行する必要があります。