【问题标题】: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);

【讨论】:

  • 作为新访问者的说明:这个答案已经过时了,因为 jQuery Version 1.8: ".data(“events”): jQuery 将其与事件相关的数据存储在一个名为 (等待它)每个元素上的事件。这是一个内部数据结构,因此在 1.8 中,它将从用户数据名称空间中删除,因此它不会与同名的项目冲突。[...]“。另见:jQuery 1.8 find event handlers
  • 谢谢 - 我加了一条注释 :)
【解决方案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.
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2011-11-09
    • 2010-11-17
    相关资源
    最近更新 更多