【问题标题】:Is it possible to obtain a list of events bound to an element in jQuery?是否可以获得绑定到 jQuery 中元素的事件列表?
【发布时间】:2009-11-13 14:58:34
【问题描述】:
正如问题所说,我需要绑定到特定元素的事件列表。
我的意思是在加载 dom 时绑定到该元素的点击、鼠标悬停等事件。
(愚蠢的)例子:
$("#element").click(function()
{
//stuff
});
$("#element").mouseover(function()
{
//stuff
});
$("#element").focus(function()
{
//stuff
});
结果:
点击,
鼠标移到,
重点
【问题讨论】:
标签:
jquery
events
binding
elements
【解决方案1】:
每个事件都被添加到一个数组中。
可以使用 jQuery 数据方法访问该数组:
$("#element").data('events')
要将一个对象的所有事件记录到 fireBug,只需键入:
console.log ( $("#element").data('events') )
您将获得所有绑定事件的列表。
更新:
对于 jQuery 1.8 及更高版本,您必须查看内部 jQuery 数据对象:
$("#element").each(function(){console.log($._data(this).events);});
// or
console.log($._data($("#element")[0]).events);
【解决方案2】:
您可以通过element.data('events'); 访问它。示例:
var events = element.data('events');
for (var type in events) {
// `type` is "click", "mouseover", "change", etc.
for (var handler in events[type]) {
// `handler` is the associated function.
}
}