1

内向き」タイプのイベントをキャッチしてABCを実行し、「外向き」タイプのイベントをキャッチしてXYZを実行したい。予想外の奇妙な時間にさまざまなイベントが発生するという問題が発生しているので、私のアプローチが実際に問題を引き起こしているのではないかと思います。

<div class="box">first box</div>
<div class="box">second box</div>

$(".box")
  .on("focus mouseover mousedown", function(){ /* do ABC */ })
  .on("blur mouseout mouseup",     function(){ /* do XYZ */ });

.on()このようにメソッドをつなぎ合わせると、blurイベントが同じに対してのみトリガーされるようになると思います.box。しかし、それ以外は、このようにした場合と同じように動作することを期待しています。

$(".box").on("focus mouseover mousedown", function(){ /* do ABC */ });
$(".box").on("blur mouseout mouseup",     function(){ /* do XYZ */ });

またはこのようなことをする:(冗長に見える)

$(".box").on({
  focus:     function(){   /* do ABC */ },
  mouseover: function(){   /* do ABC */ },
  mousedown: function(){   /* do ABC */ },

  blur:      function(){   /* do XYZ */ },
  mouseout:  function(){   /* do XYZ */ },
  mouseup:   function(){   /* do XYZ */ }
);

私は「どちらが良いか」ではなく、「どのように違うのか」を尋ねています。彼らは異なる結果を得ているようです。

4

2 に答える 2

1

これらは、jQueryセレクター$(".box")が1回だけ実行されるという意味で異なるため、チェーン化する方が効率的です。機能的には同じです。

于 2012-11-30T19:49:35.197 に答える
0

jQuery関数呼び出しは、セレクターに一致するのコンテキストを返し、this連鎖を可能にします。

このため、.on()チェーンは意図したとおりに機能します。

于 2012-11-30T19:50:07.730 に答える