如何检查是否有附加到元素/文档的JavaScript事件侦听器/处理程序? [重复]

问题描述 投票:76回答:4

试图在线搜索,但看起来我不能正确地制定搜索查询。

我如何使用jQuery或仅使用javascript列出附加到元素/文档/窗口或DOM中的所有处理程序或事件侦听器?

javascript jquery javascript-events
4个回答
18
投票

没有jQuery:

如果使用elem.addEventListener()方法添加了侦听器,则列出这些侦听器并不容易。您可以通过用自己的包装来覆盖EventTarget.addEventListener()方法。然后,您将获得有关注册了哪些侦听器的信息。

var f = EventTarget.prototype.addEventListener; // store original
EventTarget.prototype.addEventListener = function(type, fn, capture) {
  this.f = f;
  this.f(type, fn, capture); // call original method
  alert('Added Event Listener: on' + type);
}

您可以在http://jsfiddle.net/tomas1000r/RDW7F/找到工作示例


47
投票

在1.8之前的jQuery中,尝试使用$("#element").data("events")

编辑:

还有jQuery扩展:listHandlers


32
投票

[调试时,如果您只想看看是否有事件,建议您使用Visual Event或Chrome开发人员工具的元素]部分:选择一个元素并在右下角查找“事件监听器”>。

在您的代码中,如果您使用的是1.8之前的jQuery,则可以使用:

$(selector).data("events")

获取事件。从1.8版开始,此功能已终止(请参见this bug ticket)。您可以使用:

$._data(element, "events")

但是不建议这样做,因为它是内部jQuery结构,并且在以后的版本中可能会发生变化。

This question有一些可能有用的答案,但是它们都没有与$(selector).data("events")相同的优雅之处。


3
投票

我刚刚发现了视觉事件2:

© www.soinside.com 2019 - 2024. All rights reserved.