如何获取绑定到事件的事件处理程序的列表 [duplicate]

How to get a list of the event handlers bound to an event [duplicate]

提问人:Alberto De Caro 提问时间:11/13/2012 最后编辑:Brian Tompsett - 汤莱恩Alberto De Caro 更新时间:7/9/2022 访问量:5822

问:

这个问题在这里已经有答案了:
11年前关闭。

可能的重复:
如何在 DOM 节点上找到事件侦听器?

给定一个元素,假设一个 ,是否可以获取绑定到该元素触发的特定事件的处理程序列表?div

/* pseudo code: click on a div handlers? */
document.getElementById('myDiv').getHandlers('click');

编辑

好的,这里有一些更多细节。我想将单击处理程序绑定到 div,除非另一个处理程序已经绑定到 div。我想到的是以下几点:

/* pseudo code: click on a div handlers? */
if(!document.getElementById('myDiv').getHandlers('click'))
   document.getElementById('myDiv').addEventListener('click', myEventhandler);
javascript 事件处理 dom-events

评论

0赞 Travis J 11/13/2012
这就是为什么当我绑定处理程序时,我会给它们起唯一的名称。您甚至可以将名称存储在元素的 data 属性中。
0赞 Alberto De Caro 11/13/2012
@Bergi:我已经阅读了建议的重复项。但在任何情况下,我都没有找到一种以编程方式获取处理程序列表的方法。关于调试或使用 jQuery 的建议答案。
0赞 Bergi 11/13/2012
@ADC:是的,因为没有。
0赞 pixelfreak 11/13/2012
如果您使用的是纯 DOM,这是不可能的,但如果您使用像 jQuery 这样的框架,则可以。这已经在这里得到了更详细的回答:stackoverflow.com/questions/446892/... (见第二个答案)

答:

10赞 Bergi 11/13/2012 #1

不,DOM 方法是不可能的。

但是,某些库将它们绑定的所有处理程序存储在与元素相关的数据结构中,以启用 .unbindAll