jQuery не дозволяє просто отримувати доступ до подій для даного елемента. Ви можете отримати доступ до них, використовуючи недокументований внутрішній метод
$._data(element, "events")
Але це все одно не дасть вам усіх подій, якщо бути точним, не буде показано вам події, призначені для
$([selector|element]).on()
Ці події зберігаються всередині документа, тому їх можна отримати, переглянувши їх
$._data(document, "events")
але це важка робота, оскільки є події для цілої веб-сторінки.
Том G вище створив функцію, яка фільтрує документ лише за подіями заданого елемента та об'єднує вихід обох методів, але у нього є недолік дублювання подій у висновку (і ефективно у внутрішньому списку подій jQuery елемента, що змішується з вашим додатком). Я усунув цей недолік, і ви можете знайти код нижче. Просто вставте його в консоль розробника або в код додатка і виконайте його, коли потрібно, щоб отримати хороший список усіх подій для даного елемента.
Що важливо помітити, елементом насправді є HTMLElement, а не об'єкт jQuery.
function getEvents(element) {
var elemEvents = $._data(element, "events");
var allDocEvnts = $._data(document, "events");
function equalEvents(evt1, evt2)
{
return evt1.guid === evt2.guid;
}
for(var evntType in allDocEvnts) {
if(allDocEvnts.hasOwnProperty(evntType)) {
var evts = allDocEvnts[evntType];
for(var i = 0; i < evts.length; i++) {
if($(element).is(evts[i].selector)) {
if(elemEvents == null) {
elemEvents = {};
}
if(!elemEvents.hasOwnProperty(evntType)) {
elemEvents[evntType] = [];
}
if(!elemEvents[evntType].some(function(evt) { return equalEvents(evt, evts[i]); })) {
elemEvents[evntType].push(evts[i]);
}
}
}
}
}
return elemEvents;
}