JQuery поиск обработчика события объекта

284
13 марта 2017, 10:14

Мне нужно найти, какие обработчики событий записаны на объекте.

Например:

$("#el").click(function() {...});
$("#el").mouseover(function() {...});

На $("#el") записаны события click и mouseover.

Есть ли функция, чтобы узнать это, и можно ли выполнить итерацию по обработчикам событий?

Если это невозможно в объекте jQuery с помощью правильных методов, возможно ли это для обычного объекта DOM?

Переведено с: http://stackoverflow.com/questions/2518421/

Answer 1

Начиная с jQuery 1.8, информация о событиях больше не доступна из «public API» для данных. Прочтите это сообщение в блоге jQuery. Теперь, для того чтобы узнать список событий записанных на объекте, нужно использовать это:

jQuery._data( elem, "events" );

elem должен быть элементом HTML, а не объектом jQuery или селектором.

Обратите внимание, что это внутренняя, «частная» структура, и ее не следует изменять. Используйте это только для целей отладки.

В старых версиях jQuery вам может потребоваться использовать старый метод:

jQuery( elem ).data( "events" );

Пример:

$('#el').click(function() { 
  $(this).text('Нажали!'); 
}) 
 
$('#el').mouseover(function() { 
  $(this).text('Поводили мышкой!'); 
}); 
 
// Получаем события 
 
var elem = $('#el').get(0); 
 
console.log( $._data(elem, "events") );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<div id="el">Текст</div>

READ ALSO
Какая технология используется?

Какая технология используется?

Добрый вечер, подскажите какая технология используется для открытия изображения https://unsplashcom/new По клику на фото открывается фото в полном...

403
Не возвращаются данные с контроллера

Не возвращаются данные с контроллера

Есть контроллер st link, с него надо вытащить массив измеренийСуть заключается в поэтапной отправке команд контроллеру

289