1

ID付きのボタンがあるとします:

<input id='someButton' />

このボタンにイベント リスナーをアタッチします。

$('#form').on('click', '#someButton', function() { 
   alert("My listener called"); 

});

しかし、私が知らないうちに、誰かが以前にこのまったく同じボタンのイベント リスナーを作成しました。

$('#form').on('click', '#someButton', function() { 
   alert("Some other listener called"); 
});

上記と同じことを効果的に行うコードに遭遇しましたが、最初に登録されたリスナーが使用されているようです。jQuery が常に特定の ID に登録された最初のイベント リスナー (およびそのリスナーのみ) を呼び出すと仮定するのは正しいですか?

4

2 に答える 2

7

正しくない。jQuery は、要素にバインドされたすべてのイベント リスナーを、バインドされた順序で呼び出します。

既存のイベント ハンドラーを削除するには、次を使用します.off()

$('#form').off('click'); // click event handler(s) removed
$('#form').off(); // all event handler(s) removed

ただし、祖先の DOM 要素から委任されたイベントは、この方法では削除されないことに注意してください。

于 2013-03-12T18:41:13.563 に答える
0

マウスダウンを使用できます:

$('#form').on('mousedown', '#someButton', function() { 
    alert("My listener called"); 
});

この助けを願っています。

于 2013-03-12T18:52:00.467 に答える