我可以使用jQuery查找绑定到元素上的事件吗?

我在这个链接上绑定了两个事件处理程序:

<a href='#' id='elm'>Show Alert</a> 

JavaScript的:

 $(function() { $('#elm').click(_f); $('#elm').mouseover(_m); }); function _f(){alert('clicked');} function _m(){alert('mouse over');} 

有什么办法可以得到一个元素绑定的所有事件的列表,在这种情况下,元素id="elm"

在jQuery的现代版本中,您将使用$._data方法查找由jQuery附加到正在讨论的元素的任何事件。 请注意 ,这是一个仅供内部使用的方法:

 // Bind up a couple of event handlers $("#foo").on({ click: function(){ alert("Hello") }, mouseout: function(){ alert("World") } }); // Lookup events for this particular Element $._data( $("#foo")[0], "events" ); 

$._data的结果将是一个包含我们设置的两个事件的对象(如下图所示,展开的mouseout属性):

控制台输出为$ ._

然后在Chrome中,您可以右键单击处理函数,然后单击“查看函数定义”以向您显示在代码中定义的确切位置。

  • 点击F12打开开发工具
  • 点击Sources选项卡
  • 在右侧,向下滚动到“事件监听器断点”,并展开树
  • 点击你想听的事件。 *与目标元素进行交互,如果他们触发,您将在调试器中获得一个中断点

同样,你可以右击目标元素 – >选择“检查元素”向下滚动在开发框架的右侧,底部是“事件监听器”。 展开树来查看附加到元素的事件。 不知道这是否适用于通过冒泡处理的事件(我猜不是)

我将这个添加到后代。 有一个更简单的方法,不涉及写更多的JS。 使用Firefox的惊人的萤火虫插件 ,

  1. 右键单击元素并选择“用Firebug检查元素”
  2. 在边栏面板(如屏幕截图所示)中,使用小箭头导航到“事件”选项卡
  3. 事件选项卡显示每个事件的事件和相应的功能
  4. 它旁边的文本显示了功能位置

在这里输入图像描述

jQuery Audit插件插件应该让你通过正常的Chrome开发工具来做到这一点。 这不是完美的,但它应该让你看到绑定到元素/事件的实际处理程序,而不仅仅是通用的jQuery处理程序。

($ ._ data($(“a.wine-item-link”)[0])。事件== null){…做一些事情,几乎绑定他们的事件处理程序}检查如果我的元素绑定到任何事件。 它仍然会说undefined(null),如果你没有连接你的所有事件处理程序。 这就是为什么我在if表达式中进行评估的原因。

当我将一个复杂的DOM查询传递给$ ._数据,如下所示: $._data($('#outerWrap .innerWrap ul li:last a'), 'events')在浏览器控制台中抛出undefined。

所以我不得不在父div: $._data($('#outerWrap')[0], 'events')上使用$ ._数据来查看a标签的事件。 这是一个同样的JSFiddle: http : //jsfiddle.net/giri_jeedigunta/MLcpT/4/