我想知道是否有一种优雅的方法可以在不影响类似事件的情况下从HTML元素中删除特定的事件侦听器。
例如
var a = {
addEvent: function(){
$('body').on('click', function(){
//does something here.
});
}
}
var b = {
addEvent: function(){
$('body').on('click', function(){
//does something else here.
});
}
}
a.addEvent();
b.addEvent();
因此,问题是:如何在不删除
a
的事件的情况下删除对象b
的单击事件?$('body').off('click'); //removes both event listeners
我认为大多数方法都会杀死这两个听众。很高兴看到任何优雅的回应。
最佳答案
一种选择是namespace the events:
var a = {
addEvent: function(){
$('body').on('click.a', function(){
//does something here.
});
}
}
var b = {
addEvent: function(){
$('body').on('click.b', function(){
//does something here.
});
}
}
a.addEvent();
b.addEvent();
$('body').off('click.a'); //removes the a event listener