2013-10-04 4 views
0

Мне нужно проверить, привязаны ли какие-либо события к элементу.Связывание событий проверки JQuery

Например

$(".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.

+0

возможно дубликат (HTTP : //stackoverflow.com/questions/1729732/is-it-possible-to-obtain-a-list-of-events-bound-to-an-element-in-jquery) – Denis

+0

На самом деле я уже видел этот вопрос. Но в 1.10.1 $ (". SomeOtherSelector"). Data ('events') возвращает null. И если я использую $ (this), он тоже возвращает null –

+0

См. [Этот вопрос] (http://stackoverflow.com/questions/12214654/jquery-1-8-find-event-handlers), в котором объясняется, как это сделать последние версии. –

ответ

2

вы можете получить события $(".someOtherSelector").data('events'), а затем проверить наличие или отсутствие необходимого события. не

​var events = $._data($(".someOtherSelector")[0], "events"); 
if(events.indexOf("click") == -1) { 
    $(".someOtherSelector").click(function(){ 
    alert('some other action'); 
    }); 
} 
+1

Это было удалено задолго до 1.10. –

+0

О, извините, я пропустил 'using Jquery v. 1.10.1' –

+0

Tnx, но $ (". SomeOtherSelector "). Data ('events'); возвращает null –

1

По JQuery 1.8, то event data больше недоступна для данных. Прочтите это jQuery blog post. Теперь вы должны использовать это: [? Можно ли получить список событий, связанных с элементом JQuery]

jQuery._data(element, "events") 

Код

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

Fiddle

+1

Uncaught TypeError: Object [object Object] не имеет метода '_data' –

Смежные вопросы