0

stopPropagation()現在の要素をラップする DOM 要素にイベントが到達しないことを知っています。また、このイベントが同じ要素の他のハンドラーに配信されるのを防ぎますか?

例を挙げると、要素に独自のクリック ハンドラーが定義されています。さらに、このjQuery コンテキスト メニュープラグインも使用しています。このプラグインは、a を処理し、マウスの後 (up|down) を使用します。これにより、クリック ハンドラーが無効になっているようですmousedown+(testbutton == 2)+mouseupstopPropagation()プラグイン ソースでこれら 2 つの呼び出しをコメントすると、クリック ハンドラとコンテキスト メニューが正しく機能します。これはそれを示唆しているようでstopPropagation()stopImmediatePropgation()同じことをします。私の理解は正しいですか?

4

1 に答える 1

3

stopPropagationは同じイベントの他のハンドラーを停止しませんが、この特定のケースでは停止します。イベントで使用すると、mousedownイベントを防ぎclickます。

デモ: http://jsfiddle.net/v6ges/

$('div').mousedown(function(e){ alert(0); e.stopPropagation(); });
$('div').click(function(e){ alert(1); e.stopPropagation(); });
$('div').click(function(e){ alert(2); e.stopPropagation(); });

イベントのみmousedownがトリガーされます。mousedownイベント バインディングをコメント アウトすると、両方のclickイベントがトリガーされます。

于 2012-08-18T19:32:07.240 に答える