Метод triggerHandler - выполнение всех обработчиков событий, привязанных к элементу
Метод triggerHandler
позволяет запустить
все обработчики событий, привязанные к элементу. Он
работает аналогично методу
trigger
,
но между ними существуют отличия:
Обработчик событий сработает, но стандартное
событие не будет вызвано. К примеру
triggerHandler('submit')
,
сработав, не вызовет submit
.
Метод triggerHandler
действует
только на первый элемент в наборе.
События, запущенные triggerHandler
не в сплывают в иерархии DOM-элементов.
triggerHandler
не возвращает объект jQuery,
он возвращает значение, полученное последним
вызванным обработчиком. Если никакие обработчики не
запускаются, то возвращает undefined
.
Синтаксис
В качестве первого параметра мы можем передать тип события в виде строки, вторым необязательным массив или объект, содержащим дополнительные параметры для передачи обработчику:
$(селектор).triggerHandler(тип события, [дополнительные параметры]);
Можно первым параметром передать событие
в виде объекта jQuery.Event
:
$(селектор).trigger(событие, [дополнительные параметры]);
Пример
Давайте сделаем так, что при нажатии на кнопку
с #test1
наш инпут получит фокус и в
консоли выведется 'Focused'
, другими
словами - сработает и функция-обработчик и
событие фокуса. При нажатии на вторую кнопку
с #test2
сработает только функция-обработчик,
но инпут не получит фокус:
<button id="test1">button1</button>
<button id="test2">button2</button>
<input type="text">
$('#test1').click(function() {
$('input').trigger('focus');
});
$('#test2').click(function() {
$('input').triggerHandler('focus');
});
$('input').focus(function() {
console.log('Focused')
});