@heahoh
Full stackoverflow developer

Как поместить обработчик события в начало очереди?

На некоторый элемент DOM через .on('click') привязан обработчик handler1. Есть необходимость повесить еще один обработчик handler2, который должен быть выполнен первым.
События и обработчики:
$('#id').on('click', function() { console.log('click1'); });
$('#id').on('click', function() { console.log('click2'); });

Текущий результат выполнения данного кода:
click1
click2

Необходимый результат:
click2
click1


Необходимо браузеронезависимое решение, версия jQuery - 1.7.1
  • Вопрос задан
  • 326 просмотров
Решения вопроса 1
Пример для jquery 1.7.2
var $block = $('#block');
$block.on('click', function() { console.log('click1'); });
...


// получаем все навешенные ранее обработчики на событие click
var events = $block.data('events').click.slice();
// снимаем обработчики
$block.off('click');
// вешаем новый обработчик поверх предыдущих
$block.on('click', function() { console.log('click2'); });
// заново навешиваем предыдущие
$.each(events, function(i, event) {
  $block.on('click', event.handler);
});

Песочница
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Единственный способ - установить обработчик раньше по коду.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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