有没有办法暂时禁用事件监听器?
在我的例子中,我有一个第三方库(不是以 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/