2009-11-13 2 views
5

Как сказал вопрос, мне нужен список событий, связанных с определенным элементом.Возможно ли получить список событий, связанных с элементом в jQuery?

Я имею в виду такие события, как щелчок, mouseover и т. Д., Связанные с этим элементом при загрузке dom.

(Stupid) пример:

$("#element").click(function() 
{ 
    //stuff 
}); 
$("#element").mouseover(function() 
{ 
    //stuff 
}); 
$("#element").focus(function() 
{ 
    //stuff 
}); 

Результат:

нажмите, Mouseover,

+0

Вы пытаетесь отлаживать или управлять развернутым решением? –

ответ

13

Каждое событие добавляется в массив фокус.

Этот массив можно получить с помощью метода данных JQuery:

$("#element").data('events') 

регистрировать все события одного объекта к Firebug просто введите:

console.log ($("#element").data('events')) 

И вы получите список все оценки Мероприятия.


Обновление:

Для JQuery 1,8 и выше, вы должны смотреть на внутренний объект данных JQuery:

$("#element").each(function(){console.log($._data(this).events);}); 
// or 
console.log($._data($("#element")[0]).events); 
+1

В качестве примечания для новых посетителей: этот ответ устарел после jQuery [версия 1.8] (http://blog.jquery.com/2011/11/08/building-a-slimmer-jquery/): «* .data («События»): jQuery хранит связанные с событиями данные в объекте данных с именем (ожидание) для каждого элемента. Это внутренняя структура данных, поэтому в 1.8 это будет удалено из пространства имен данных пользователя, t конфликтуют с элементами с тем же именем. [...] * ". См. Также: [jQuery 1.8 find обработчики событий] (http://stackoverflow.com/questions/12214654/jquery-1-8-find-event-handlers) – insertusernamehere

+1

Спасибо - я добавил примечание :) – jantimon

2

Вы можете получить доступ к его element.data('events');. Пример:

var events = element.data('events'); 
for (var type in events) { 
    // `type` is "click", "mouseover", "change", etc. 
    for (var handler in events[type]) { 
     // `handler` is the associated function. 
    } 
}