2

いくつかのコードをクリーンアップして改善しようとしています。$(document)複数のイベントを次のようにアタッチするかなり大きなスニペットがあります。

$(document).on('eventA.nameA', '#pageA', function(){
    // do sth
});

$(document).on('eventB.nameB', '#pageB', function(){
    // do sth
});

$(document).on('eventC.nameC', '#pageC', function(){
    // do sth
});

したがって、基本的にすべてのイベント バインディングは直接ドキュメントに適用されます。

質問:

制限はありますか (約 50 個の個別の doc bindings が見つかりました)、これを単一のセレクターに設定することの利点/欠点は次のとおりです。

$(document)
    .on('eventA.nameA', '#pageA', function(){
        // do sth
    })
    .on('eventB.nameB', '#pageB', function(){
        // do sth
    })
    .on('eventC.nameC', '#pageC', function(){
        // do sth
    });

ほとんどのバインディングはページ固有です (これは Jquery Mobile アプリケーションであるため、ページが DOM に取り込まれると、そのバインディングはこのように設定されます)。$(document)したがって、これらのバインディングを配置する場所は他にありません。永続化されている間に引き出されるためです。

ご意見ありがとうございます。

4

1 に答える 1

2

それらを単一のセレクターに配置することの利点は、$(document)毎回呼び出す必要がないことです($(document)キャッシュされるため、オーバーヘッドが小さくなります)。欠点は、それらがすべて次々に配置されている必要があり、さらに1レベルインデントすることです。それは本当に重要ではありません。

重要なの、それらが実際のセレクターに近い場合、documentIDセレクターに委任を使用することはおそらく本当に無駄であるということです。ドキュメントの準備ができるまで待つか、要素が更新されたときにイベントハンドラーを更新します。特に、これらすべての要素が実際に同じページに同時に存在しない場合はそうです。セレクターが実際にそれよりも複雑な場合は、この段落を無視してください:-)

于 2012-11-18T14:31:50.343 に答える