javascript - jQuery/Javascript 暂时禁用由 addEventListener/attachEvent 附加的事件

标签 javascript jquery unbind

有没有办法暂时禁用事件监听器?

在我的例子中,我有一个第三方库(不是以 jQuery 为中心),它使用 addEventListener/attachEvent.

在某些情况下,另一个事件会在不同的元素上触发,我需要禁用这些事件监听器。到目前为止,我的解决方案是简单地 unbind鼠标悬停/鼠标移出。这通常工作正常,因为该事件通常会导致页面刷新。

但是,有时会出现错误(想想验证错误)导致页面不刷新,我需要重新附加 mouseover/mouseout 事件监听器。

有用信息

可能值得一提的是,因为 mouseover/mouseout 事件监听器是在第三方库中创建和附加的,所以我不能简单地将事件分配给变量并以这种方式绑定(bind)/解除绑定(bind)(AFIK 是最好的方法)这个)。

更新

我本来问过

Is there a way in jQuery to get the event listeners already assigned to an object?

我后来发现无法访问由 addEventListener/attachEvent 分配的事件:Access events added with attachEvent() / addEventListener() in JavaScript

最佳答案

jQuery 使用 data在内部存储事件,因此您可以使用它来获取对象的所有事件处理程序:

$("#foo").data("events")

然后您可以使用 unbind 删除特定的处理程序:

$("#foo").unbind('click', $("#foo").data("events").click[42]);

关于javascript - jQuery/Javascript 暂时禁用由 addEventListener/attachEvent 附加的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162084/

相关文章:

javascript - 具有不同 id Jquery 的目标元素

c# - 使用 jQuery 的 ajax 将文件发送到 C# 中的 Web 服务 (asmx)

c# - 如何以编程方式 "unbind"套接字?

javascript - 根据类别从数据库中调用不同类型的问题

javascript - 当我尝试刷新页面时出现此错误

php - php foreach 中从 php 到 Jquery.click 的属性

jquery - 无法取消绑定(bind)到 $(document) 的事件

javascript - 如何取消绑定(bind)特定的事件处理程序

javascript - 在图像的边框之间切换并删除其他现有图像的边框

javascript - RN - 更改 parent 的 screenProps