Método triggerHandler
El método triggerHandler permite ejecutar
todos los manejadores de eventos vinculados a un elemento.
Funciona de manera similar al método
trigger,
pero existen diferencias entre ellos:
El manejador de eventos se activará, pero el evento
estándar no se llamará. Por ejemplo,
triggerHandler('submit'),
al activarse, no llamará a submit.
El método triggerHandler actúa
solo sobre el primer elemento del conjunto.
Los eventos lanzados por triggerHandler
no burbujean en la jerarquía de elementos DOM.
triggerHandler no retorna un objeto jQuery,
retorna el valor obtenido por el último
manejador invocado. Si no se ejecuta ningún manejador,
retorna undefined.
Sintaxis
Como primer parámetro podemos pasar el tipo de evento como una cadena, como segundo parámetro opcional un array o un objeto que contenga parámetros adicionales para pasar al manejador:
$(selector).triggerHandler(tipo de evento, [parámetros adicionales]);
Se puede pasar como primer parámetro un evento
en forma de objeto jQuery.Event:
$(selector).trigger(evento, [parámetros adicionales]);
Ejemplo
Hagamos que al hacer clic en el botón
con #test1 nuestro input obtenga el foco y en
la consola se muestre 'Focused', en otras
palabras, se ejecutará tanto la función manejadora como
el evento de foco. Al hacer clic en el segundo botón
con #test2 solo se ejecutará la función manejadora,
pero el input no obtendrá el 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')
});