javascript - Jquery:删除事件处理程序(例如'cklick'),但保留其他事件处理程序(用于'click')
问题描述
如果有一个小的 jsfiddle 示例: https ://jsfiddle.net/skmqjwt7/
我有多个事件监听器。所有监听相同的事件(button.a click in the fiddle example)。现在我想断开一个事件侦听器,但我不想(!)断开所有事件侦听器并重新连接我想保留的那些。
我有多个类,它们有一些事件监听器,我只想断开一个类的事件监听器。
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 的事件监听器,同时保持所有其他类的事件监听器活着。
我无法在全球范围内处理这种断开连接,例如:
$('#main').off();
a.reconnect();
c.reconnect();
在我的情况下,B 类只是从后端获取数据,并决定停止自行监听事件。
这可能吗?在我目前的情况下,在 $(document) 上触发了一个自定义事件,并且任何其他 javascript 类都能够监听,但我不知道如何只删除一个监听器。
解决方案
unbind() 方法是 jQuery 中的一个内置方法,用于删除任何选定的事件处理程序。此方法可用于删除特定事件处理程序,或停止特定功能。它适用于使用事件对象的任何事件处理程序。
注意:如果未提供参数,则该方法适用于指定元素的所有事件处理程序。句法:
$(selector).unbind(event, function, eventObj)
参数:此方法接受上面提到的三个参数,如下所述: event:它是一个可选参数,用于指定事件(一个或多个)以从元素中删除它们。function:它是一个可选参数,用于指定要与元素的指定事件解除绑定的函数的名称。eventObj:它是一个可选参数,用于指定要从事件绑定函数中删除的事件对象。
推荐阅读
- shell - 提取txt文件的最后一个重复部分
- c# - Typeahead.js 调用 ASP.Net 核心 API
- c++ - 如何在 GDI+ 中使用 stock-objects
- ios - 是否可以为 iOS、模拟器和 * 和 * Mac 创建一个胖框架?
- android - Firebase 数据库 getChildrenCount() Android
- git - 当被告知有未合并的文件时如何使用“他们的”策略强制合并
- linear-programming - 查找基本和非基本变量
- php - PHP IntlDateFormatter 在不同的服务器上返回不同的值
- r - 为节点内的值抓取html节点?
- r - 将 Inf(数字)写入 excel 并将其读回 R。 Inf 是 char,而不是数字