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

2021/01/31 06:51 · jquery ·  · 0评论

我需要找到附加到#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不可能可靠地确定元素上的所有侦听器。

长答案是没有列出所有连接的侦听器的标准机制。一些库保留使用该库已附加的侦听器列表,但不一定了解其他侦听器。可以通过测试相关的元素属性和属性(对每个元素的onclickonchangeonblur等进行繁琐的测试)来找到添加在标记中或作为元素属性的侦听器但是,除非找到了一个引用并将其变为可用,否则不可能找到使用addEventListenerattachEvent添加的侦听器(请参阅有关库的评论)。

同样,有些“委派”的侦听器看上去实际上是附加到元素的,而实际上它们是附加到父元素的。

$( '#mySelect' ).bind( {
    'change': function( event ) {

    },
    'click': function( event ) {

    }
});


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

除了内联的事件,您还可以尝试以下操作:

alert(document.getElementById('mySelect').getAttribute('onclick'));
本文地址:http://jquery.askforanswer.com/huoqufujiadaoyuansudesuoyoushijianchulichengxu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!