小编典典

如何检查动态附加的事件监听器是否存在?

all

这是我的问题:是否有可能检查动态附加的事件侦听器是否存在?或者如何检查 DOM 中“onclick”(?)属性的状态?我已经像 Stack Overflow
一样在互联网上搜索解决方案,但没有运气。这是我的html:

<a id="link1" onclick="linkclick(event)"> link 1 </a>
<a id="link2"> link 2 </a> <!-- without inline onclick handler -->

然后在 Javascript 中,我将动态创建的事件侦听器附加到第二个链接:

document.getElementById('link2').addEventListener('click', linkclick, false);

代码运行良好,但我所有检测附加侦听器的尝试都失败了:

// test for #link2 - dynamically created eventlistener
alert(elem.onclick); // null
alert(elem.hasAttribute('onclick')); // false
alert(elem.click); // function click(){[native code]} // btw, what's this?

jsFiddle 在这里。如果您单击“为 2 添加 onclick”,然后单击“[链接
2]”,则事件会很好地触发,但“测试链接 2”总是报告错误。有人可以帮忙吗?


阅读 63

收藏
2022-07-18

共1个答案

小编典典

无法检查是否存在动态附加的事件侦听器。

您可以查看是否附加了事件侦听器的唯一方法是附加事件侦听器,如下所示:

elem.onclick = function () { console.log (1) }

onclick然后,您可以通过返回!!elem.onclick(或类似的东西)来测试是否附加了事件侦听器。

2022-07-18