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

标签 javascript jquery jquery-events

Possible Duplicate:
test if event handler is bound to an element in 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

使用jquery-1.8.3

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

最佳答案

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

var ev = $._data(element, 'events');
if(ev && ev.click) alert('click bound');

示例如下。

$(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');
    });
});
<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>

另请注意,此检查事件的方法仅在通过 jQuery 绑定(bind)事件时才有效。如果事件通过 element.attachEventListener 绑定(bind), element.onclick , <a onclick="doStuff()">或任何其他非 jQuery 方式,这将不起作用。如果您适合这艘船,请检查this answer .

关于javascript - 如何检查元素是否有点击处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14072042/

相关文章:

javascript - 避免警告 "Use of this in closure"

javascript - jQuery 在焦点上一次显示一个 TD

javascript - 增加整个html文档的字体大小(所有元素)

javascript - 选定日期随机排序,查找最早和最晚的

javascript - CKEditor - 如何在 2 个编辑器中一起使用高级内容过滤器和小部件

javascript - 使用 jQuery 在网页上捕获键盘

javascript - jQuery 过滤方法

javascript - 单击选项卡时如何防止自动滚动

javascript - 如何获取被点击元素的类名并使用相同的类名来操作其他元素?

javascript - 如何将 jQuery ui 自动完成添加到动态内容?