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

2022-08-29 23:36:32

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

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


答案 1

在jQuery的现代版本中,您可以使用该方法来查找jQuery附加到相关元素的任何事件。请注意,这是一种仅限内部使用的方法:$._data

// 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" );

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

Console output for $._

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


答案 2

一般情况:

  • 点击打开开发工具F12
  • 点击标签Sources
  • 在右侧,向下滚动到 ,然后展开树Event Listener Breakpoints
  • 单击要侦听的事件。
  • 与目标元素交互,如果它们触发,您将在调试器中获得断点

同样,您可以:

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