javascript – 获取附加到元素的所有事件处理程序

前端之家收集整理的这篇文章主要介绍了javascript – 获取附加到元素的所有事件处理程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要找到附加到#mySelect的所有事件处理程序,如果事件是通过jQuery创建的,我可以得到它,这里alert(e)将只显示“更改”而不“点击”

JavaScript

$("#mySelect").change(function(){
    alert("changed");
})           
$.each($._data(  $("#mySelect")[0],"events" ),function(e) {
    alert(e);
})

Html:

<select id="mySelect" onclick="alert('hello')" >
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">option 3</option>
    <option value="4">option 4</option>
</select>

解决方法

简单的答案是,不可能可靠地确定使用javascript的元素上的所有听众.

长的答案是没有标准机制来列出所有附加的监听器.一些库保存已经使用库附加的监听器的列表,但不一定知道其他监听器.通过测试相关的元素属性属性(对每个元素的onclick,onchange,onblur等进行一些繁琐的测试),可以找到添加标记或元素属性中的侦听器.但是不可能找到使用addEventListener或attachEvent添加的监听器,除非引用已经被保留在某处,并且它可以使用(请参阅有关库的注释).

此外,有一些“委托”的监听器,当事实上它们附加到一个父元素时,它们会被附加到一个元素上.

猜你在找的JavaScript相关文章