События jQuery: добавьте обработчик обратного вызова к уже существующим - PullRequest
3 голосов
/ 29 января 2012

На веб-странице есть элементы с обработчиками нажатия и / или нажатия клавиш. Если я добавлю новый, он будет выполнен после них. Мне нужен способ добавить новый обратный вызов, который добавляется в список обработчиков событий, чтобы он выполнялся заранее. Как это возможно с jQuery?

Обновление

Почему я не могу просто использовать метод отмены привязки jQuery? Я внедряю свой код jQuery на любую веб-страницу, так что я не знаю, используется ли какой-либо и какой фреймворк JavaScript. Мне нужен универсальный способ обнаружения обработчиков событий и добавления моего. (Прежде чем вы спросите, я создаю приложение для записи, которое отслеживает действия пользователей по их сохранению и последующему их выполнению.)

Обновление 2

Я использую только Firefox, нет необходимости в совместимости с IE. Мне нужно дождаться полной загрузки страницы, после чего будет запущен мой скрипт jQuery.

1 Ответ

2 голосов
/ 29 января 2012

Я думаю, что это может сработать, если вы используете захват событий (обработчики предков вызываются до того, как событие достигнет элемента) вместо пузырей (child -> ancestors). Это способ перехватить событие до того, как будет достигнут целевой элемент.

Большинство обработчиков событий используют всплытие событий. Согласно w3c, событие сначала захватывается, а затем от цели снова всплывает. Поэтому, если вы привязали событие к документу с помощью захвата, оно будет выполнено первым для каждого элемента на странице.

http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-flow-capture

Вы бы связали обработчик с: (третий аргумент - хотите ли вы использовать захват событий)

document.body.addEventListener('click',handler,true)

Это будет выполняться для каждого щелчка в элементе до того, как будет выполнен обработчик события элемента, по которому щелкнули. Хотя я не уверен насчет поддержки в браузерах.

...