检查元素上是否存在事件

有没有办法检查jQuery中是否存在事件?我正在开发一个使用自定义命名空间事件的插件,并希望能够检查该事件是否绑定到元素。


答案 1
$('body').click(function(){ alert('test' )})

var foo = $.data( $('body').get(0), 'events' ).click
// you can query $.data( object, 'events' ) and get an object back, then see what events are attached to it.

$.each( foo, function(i,o) {
    alert(i) // guid of the event
    alert(o) // the function definition of the event handler
});

您可以通过将对象引用(尽管不是jQuery对象)馈送到$.data来进行检查,对于第二个参数,则输入“events”,这将返回一个填充了所有事件(如“click”)的对象。您可以遍历该对象,并查看事件处理程序的用途。


答案 2

您可以使用:

$("#foo").unbind('click');

以确保所有点击事件都已解除绑定,然后附加您的事件