说我有一个带有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上注册的第一个事件侦听器(并且仅该侦听器)?
答案 0 :(得分:7)
不正确的。 jQuery将按照绑定的顺序调用绑定到元素的ALL事件侦听器。
要删除现有的事件处理程序,请使用.off()
:
$('#form').off('click'); // click event handler(s) removed
$('#form').off(); // all event handler(s) removed
请注意,从祖先DOM元素委派的事件不会以这种方式删除。
答案 1 :(得分:0)
你可以使用mousedown:
$('#form').on('mousedown', '#someButton', function() {
alert("My listener called");
});
希望得到这个帮助。