0

グローバルフラグ変数があります。このフラグの値が の場合、DOM にtrue多くの s を追加し<div>ます。それ以外の場合は何も起こりません。この後、以前に追加したすべての でクリック イベントを処理する必要があります<div>。sを作成した直後にクリック ハンドラーを追加することはできません<div>。これらはコードの別の部分にあるためです。ただし、フラグ変数には引き続きアクセスできます。この方法でクリック ハンドラーを追加します。

$('.js-click').click(function() {
   //Handle the click. 
});

s が以前に追加されたかどうかは関係ありません<div>。上記のコードはいずれの場合でも機能しますが、グローバル フラグ変数があるため、jQuery コードの前に条件を追加でき、s が追加された場合にのみ実行されます<div>。作成されました。

if(flag) {
   $('.js-click').click(function() {
      //Handle the click. 
   });
}

これは何か違いがありますか?この条件が効率を高める要素の量または jQuery の選択の種類はありますか?

4

3 に答える 3

4

イベントバブリングを使用して、いつ追加されるかを気にしないのはなぜですか?

$(document /*or a container element that holds them all*/).on("click", ".js-click", function() {
    //handle the click
});

これのボーナスは、クリックイベントを複数の要素に一度追加していないことです。

于 2013-09-16T12:19:57.707 に答える
1

簡単な答えは次のとおりです。実際のセレクターの実行 (通常は非常に高速) が問題にならない場合は、フラグのテストは必要ありません。

パフォーマンスに問題がある場合は、フラグ テストを追加すると間違いなく役立ちます (ただし、コードの相互依存性が高まるため、フラグの名前を変更したり、それに関連するロジックを変更したりすると、このコードが機能しなくなり、そのままになる可能性があります)。気付かない)。

于 2013-09-16T12:22:16.573 に答える