@webymax

Как добавить прослушивание события раньше уже установленного?

Элементу уже назначен обработчик события через атрибут onclick:
<div id="elem" onclick="someFunc()">test</div>

Нужно добавить ещё один обработчик в click этого элемента, но чтобы он срабатывал ранее вышеуказанного. Для этого делаю так:
// вывожу обработчик в переменную и очищаю элемент от обработки событий
var func = elem.onclick;
elem.onclick = null;

// формирую новый обработчик, который будет выполнен первым, т.к. у элемента больше нет обработчиков
elem.addEventListener('click', function() {

    /* здесь размещаю нужный скрипт */
 
   // и возвращаюсь к выполнению первоначального обработчика
   func();
});


Работает хорошо. Но если в первоначальном обработчике среди аргументов было ключевое слово this, то в результате этой манипуляции привязка this к elem теряется. Как можно её сохранить? И вообще, нет ли более адекватного способа менять местами очерёдность срабатывания обработчиков? )
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы