Método triggerHandler
O método triggerHandler permite executar
todos os manipuladores de eventos vinculados a um elemento. Ele
funciona de forma análoga ao método
trigger,
mas existem diferenças entre eles:
O manipulador de eventos será acionado, mas o evento
padrão não será chamado. Por exemplo,
triggerHandler('submit'),
ao ser acionado, não chamará submit.
O método triggerHandler atua
somente no primeiro elemento do conjunto.
Os eventos disparados por triggerHandler
não sobem na hierarquia de elementos DOM.
triggerHandler não retorna um objeto jQuery,
ele retorna o valor obtido pelo último
manipulador chamado. Se nenhum manipulador for
executado, retorna undefined.
Sintaxe
Como primeiro parâmetro, podemos passar o tipo de evento como uma string; o segundo, opcional, é um array ou objeto contendo parâmetros adicionais para passar ao manipulador:
$(seletor).triggerHandler(tipo do evento, [parâmetros adicionais]);
É possível passar como primeiro parâmetro um evento
na forma de um objeto jQuery.Event:
$(seletor).trigger(evento, [parâmetros adicionais]);
Exemplo
Vamos fazer com que, ao clicar no botão
com #test1, nosso input receba o foco e
no console seja exibido 'Focused', ou seja,
serão acionados tanto a função manipuladora quanto
o evento de foco. Ao clicar no segundo botão
com #test2, apenas a função manipuladora será acionada,
mas o input não receberá o foco:
<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')
});