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

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


当前回答

一般情况下:

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

同样,你可以:

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

其他回答

一般情况下:

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

同样,你可以:

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

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

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

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

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

当我传递一个复杂的DOM查询到$。像这样:$. _data。_data($('#outerWrap . innerwrap ul li:last a'), 'events')它在浏览器控制台中抛出undefined。

所以我必须使用$。$._data($('#outerWrap')[0], 'events')查看a标签的事件。这里有一个相同的JSFiddle: http://jsfiddle.net/giri_jeedigunta/MLcpT/4/