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

<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"?


当前回答

现在,通过使用javascript函数getEventListeners(),您可以简单地获得绑定到对象的事件侦听器列表。

例如,在dev tools控制台中输入以下内容:

// Get all event listners bound to the document object
getEventListeners(document);

其他回答

一般情况下:

按F12打开开发工具 单击Sources选项卡 在右侧,向下滚动到事件侦听器断点,并展开树 单击要监听的事件。 与目标元素交互,如果它们触发,您将在调试器中获得断点

同样,你可以:

右键点击目标元素->选择“Inspect element” 向下滚动到开发框架的右侧,底部是“事件监听器”。 展开树,查看元素附加了哪些事件。不确定这是否适用于通过冒泡处理的事件(我猜不是)

我使用了类似这样的if($._data($("a.wine-item-link")[0])。事件== null){…做点什么,基本上是再次绑定它们的事件处理程序来检查我的元素是否绑定到任何事件。如果你已经从该元素中解除了所有事件处理程序,它仍然会说未定义(null)。这就是为什么我在if表达式中求值的原因。

现在,通过使用javascript函数getEventListeners(),您可以简单地获得绑定到对象的事件侦听器列表。

例如,在dev tools控制台中输入以下内容:

// Get all event listners bound to the document object
getEventListeners(document);

虽然这并不完全针对jQuery的选择器/对象,但在FireFox Quantum 58中。x,你可以使用Dev工具在元素上找到事件处理程序:

右键单击元素 在上下文菜单中,点击“Inspect Element” 如果元素(黄色框)旁边有一个“ev”图标,点击“ev”图标 显示该元素和事件处理程序的所有事件

我加上这个是为了子孙后代;有一种更简单的方法,不需要编写更多的JS。使用firefox的firebug插件,

右键点击元素,选择“Inspect element with Firebug” 在侧边栏面板(如截图所示)中,使用小>箭头导航到事件选项卡 事件选项卡显示每个事件的事件和相应的函数 旁边的文字显示了函数的位置