1

我需要检查某些事件是否已经绑定在元素上。

例如

$(".animate").click(function(){
    alert('Here comes action');
}); 

$(".someOtherSelector").click(function(){
    alert('some other action');
});

HTML

<a class="animate"></a>
<a class="someOtherSelector animate"></a>

在第二个函数中,我需要检查该元素上是否已经绑定了一个事件。如果是这样,它不应该执行alert('some other action');

我正在使用 jQuery 版本 1.10.1。

4

2 回答 2

4

jQuery 1.8开始,event data不再可用于数据。阅读这篇jQuery 博客文章。你现在应该使用这个:

jQuery._data(element, "events")

代码

$('.someOtherSelector').each(function(){
    console.log($._data(this, "events"));
});

小提琴

于 2013-10-04T12:46:03.313 回答
2

您可以获取事件$(".someOtherSelector").data('events'),然后检查所需的事件是否存在。

​var events = $._data( $(".someOtherSelector")[0], "events" );
if(events.indexOf("click") == -1) {
  $(".someOtherSelector").click(function(){
    alert('some other action');
  });
}
于 2013-10-04T12:44:34.227 回答