サイトの JavaScript 名前空間のリファクタリングに取り組んでいます。名前空間は、セレクターとイベントに jQuery を利用します。ここに例があります。
MyNamespace = {
eventElements : {
headerSectionA : $("h1.section-a");
headerSectionB : $("h1.section-b");
}
sectionA : function() {
// do stuff for section A here, such as
MyNamespace.eventElements.headerSectionA.click(function(){
// behavior A
});
}
sectionB : function() {
// do stuff for section B here, such as
MyNamespace.eventElements.headerSectionB.click(function(){
// behavior B
});
}
}
これは、抽出されたコード サンプルです。多くの eventElements と、それらの eventElements のサブセットを利用する多くのサイト セクションを想像してみてください。
私の質問は、このスクリプトが読み込まれるたびに jQuery がすべての eventElement の DOM をトラバースするのか、それともその eventElement を使用する関数が呼び出されたときだけトラバースするのかということです。
パフォーマンスの低下を避けたいのですが、jQuery が DOM をトラバースするのは、eventElement プロパティが宣言されているときなのか、それともイベントが eventElement にアタッチされているときだけなのかわかりません。
上記のアプローチを使用してパフォーマンスが低下する場合は、名前空間内で分岐して、これらの eventElements を使用するセクションのコンテキスト内でのみ eventElements を宣言します。