【发布时间】:2011-01-23 21:21:17
【问题描述】:
尝试在线搜索,但我似乎无法正确制定搜索查询。
如何使用 jQuery 或仅使用 javascript 列出所有附加到元素/文档/窗口或存在于 DOM 中的处理程序或事件侦听器?
【问题讨论】:
标签: javascript jquery dom-events
尝试在线搜索,但我似乎无法正确制定搜索查询。
如何使用 jQuery 或仅使用 javascript 列出所有附加到元素/文档/窗口或存在于 DOM 中的处理程序或事件侦听器?
【问题讨论】:
标签: javascript jquery dom-events
【讨论】:
$._data($('#element')[0], 'events') 注意: 第一个参数必须是 HTML 元素,而不是 jQuery
我刚刚发现了视觉事件 2:
http://www.sprymedia.co.uk/article/Visual+Event+2
进入“让它开始”部分,然后将文本链接拖到您的书签工具栏 转到有事件的页面并点击书签
在 FF Mac 中测试
【讨论】:
调试时,如果你只想查看是否有事件,我建议使用Visual Event 或 Chrome 开发者工具的 Elements 部分:选择一个元素并查找“Event Listeners右下角。
在你的代码中,如果你使用的是 1.8 之前的 jQuery,你可以使用:
$(selector).data("events")
获取事件。从 1.8 版开始,此功能已停用(请参阅 this bug ticket)。您可以使用:
$._data(element, "events")
但不推荐这样做,因为它是一个内部 jQuery 结构,并且可能会在未来的版本中更改。
This question 有一些可能有用的答案,但它们都不像$(selector).data("events") 那样特别优雅。
【讨论】:
没有 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/找到工作示例
【讨论】: