如何检查元素是否有点击处理程序?

kos*_*ych 20 javascript jquery javascript-events

可能重复:
测试事件处理程序是否绑定到jQuery中的元素

试图做以下(链接是'a'标签的jQuery对象):

 link.data("events") //undefined even if link has event handlers
 jQuery.data(link, 'events') //undefined always also
 jQuery._data(link, 'events') //undefined always also
Run Code Online (Sandbox Code Playgroud)

使用jquery-1.8.3

那么,如何检查元素是否有点击处理程序?

Snu*_*gus 35

您可以jQuery._data用来检查事件.第一个参数应该是对HTML元素的引用,而不是对jQuery对象的引用.

var ev = $._data(element, 'events');
if(ev && ev.click) alert('click bound');
Run Code Online (Sandbox Code Playgroud)

以下示例.

$(function(){
    $('#test').click(function(){
        // NOTE: this below is refering to the HTML element, NOT the jQuery element
        var ev = $._data(this, 'events');
        if(ev && ev.click) alert('click bound to this button');
    });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<button id="test">Click me to check for click handlers</button>
Run Code Online (Sandbox Code Playgroud)

另请注意,此事件检查事件仅在通过jQuery绑定事件时才有效.如果该事件是通过约束element.attachEventListener,element.onclick,<a onclick="doStuff()">或者任何其他非jQuery的方式,这是不行的.如果你适合这艘船,请检查这个答案.


归档时间:

查看次数:

46429 次

最近记录:

11 年,8 月 前