Задать вопрос

JS: Как заблокировать обработку события?

Здравствуйте.
Существует два обработчика клика на один и тот же элемент.
Обработчик один, выполняется раньше, чем второй.
Каким образом можно выстроить очередь выполнения события на элементе?
Или как заблокировать обработку первого события во втором обработчике?
  • Вопрос задан
  • 1785 просмотров
Подписаться 3 Оценить 3 комментария
Решения вопроса 1
twobomb
@twobomb
Не совсем понял что и зачем тебе надо, посмотри так или нет? https://jsfiddle.net/yfxkmq8s/
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mrquake
@mrquake
Абырвалг
Здрасте. Я думаю, эта статья Вам поможет javascript.ru/node/678#poryadok-srabatyvaniya-sobytiy
Ответ написан
WarGot
@WarGot
тут был бред не выспавшегося мозга
Ответ написан
EvolMate
@EvolMate
Developer
Если первый обработчик не важен, и если он был назначен с помощью jQuery - ваша жизнь прекрасна: можно просто вызвать на элементе метод off();, как-то вот так:

(function($){
  $('.item').off('click');
})(jQuery);

Еще, если элемент больше ни в чем не завязан, можно поступить очень грубо - заменить элемент его копией:

(function($){
  $('.item').replaceWith($('.item').clone());
})(jQuery);

(копия, по идее, не унаследует обработчики событий)

Еще можно обернуть ваш элемент другим, и ему назначить событие с перехватом. Но перехват не работает в IE8 и ниже. Чтобы назначить перехват в нормальных браузерах - третим параметром в addEventListener() нужно передать true и событие с перехватом на родительском элементе будет выполняться раньше событий его "детей". Пример перехвата события для IE9 и старше есть вот тут: stackoverflow.com/a/17249184
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы