jqueryでイベント登録について読むたびに、イベントハンドラを最寄りの親に追加し、イベントリスナをドキュメントに追加しないようにする必要があると言われています。なぜjqueryでドキュメントにイベントを登録するのが悪い習慣ですか?
しかし、なぜ彼らは遅いですか?明らかに、それはイベントが文書にバブルする必要があり、時間がかかるからです。次に、コールするセレクタのリストと比較されます。私は要素をクリックするのであれば、ここで
$(document).on("click", ".abc", function(){ })
$(document).on("click", ".abc2", function(){ })
、クリックイベントは、文書までバブルとなり、それがセレクタリスト(」.abc、.abc2" )を一致します...それは非効率的です。私はそれを持っていますが、リストにセレクタが1つだけあればどうですか?例えば
$(document).on("click", "*", function(){ })
遅くなるでしょうか?もしそうなら、なぜですか?
基本的に私はlibにsimiler Googleのjsactionを作成しようとしているので、私はこのように書きます: - これが唯一の選択になりますので
$(document).on("click", "[jsaction]", function(){ })
ので、私はそれが遅くなることはないと思います?それともそれは?
文書にイベントを添付するのが効率的でない場合、完全にajaxアプリケーションはどうでしょうか?私のアプリケーションは完全にajaxであり、すべてのページはajaxによってダウンロードされます。別の、より効率的なソリューションがありますか?
[すべてのjqueryイベントを$(文書)にバインドする必要がありますか?](http://stackoverflow.com/questions/12824549/should-all-jquery-events-be-bound-to-document) –
実際に私はなぜそれが遅いと尋ねて、私の場合は、その質問の答えで与えられた別の状況です。そのイベントをセレクタのリストにマッチさせる必要があったので、彼は言っていますが、一致するセレクタが1つしかない場合はどうなりますか?だから失われたばかりのパフォーマンスは、文書化する時間になるでしょうか?確かにわかりません:( –
@vikram実際にRino Rajによって提供された答えは、なぜ*遅いのかを説明するのにかなり良い仕事をしています.DOMツリーを一気に見上げることに伴うオーバーヘッドがドキュメントレベル –