jQuery - 同一按钮的多个事件监听器

时间:2013-03-12 18:39:58

标签: javascript jquery

说我有一个带有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上注册的第一个事件侦听器(并且该侦听器)?

2 个答案:

答案 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"); 
});

希望得到这个帮助。