如果有一个小jsfiddle示例:https://jsfiddle.net/skmqjwt7/
我有多个事件监听器。所有人都在监听相同的事件(按钮。在小提琴示例中单击)。现在我想断开一个事件侦听器,但我没有(!)我想断开所有事件侦听器,并重新连接那些我想要保留的事件侦听器。
我有多个类,其中有一些事件侦听器,我只想断开一个类的事件侦听器。
class a{
...stuff
$('#main').on('bla', function(e){
...stuff
});
}
class b{
...stuff
$('#main').on('bla', function(e){
...stuff
});
function disconnectMe()
{
//disconnect B on('bla')
}
}类B不知道A(或任何其他可能监听该事件的类)。因此,我只想删除B的eventlisteners,同时保留所有其他类的eventlisteners。
我不能处理这种全局断开,就像:
$('#main').off();
a.reconnect();
c.reconnect();在我的例子中,类B只是从后端获取数据,并决定停止监听它自己的事件。
这个是可能的吗?在我目前的例子中,一个自定义事件在$(document)上触发,任何其他javascript类都可以侦听,但我不知道如何只删除一个侦听器。
发布于 2020-01-16 21:00:40
unbind()方法是jQuery中的一个内置方法,用于删除任何选定的事件处理程序。此方法可用于移除特定的事件处理程序或停止特定的函数。它适用于任何使用事件对象的事件处理程序。
注意:如果未提供参数,则该方法适用于指定元素中的所有事件处理程序。语法:
$(selector).unbind(event, function, eventObj)参数:此方法接受三个参数,如上所述,如下所述: event:它是一个可选参数,用于指定事件(一个或多个)以将其从元素中移除。function:可选参数,用于指定要从元素的指定事件解绑的函数的名称。eventObj:可选参数,用于指定要从事件绑定函数中移除的事件对象。
https://stackoverflow.com/questions/59770165
复制相似问题