Méthode triggerHandler
La méthode triggerHandler permet de déclencher
tous les gestionnaires d'événements attachés à l'élément. Elle
fonctionne de manière similaire à la méthode
trigger,
mais il existe des différences entre elles :
Le gestionnaire d'événements se déclenchera, mais l'événement
standard ne sera pas appelé. Par exemple
triggerHandler('submit'),
en se déclenchant, n'appellera pas submit.
La méthode triggerHandler n'agit
que sur le premier élément de l'ensemble.
Les événements déclenchés par triggerHandler
ne remontent pas dans la hiérarchie des éléments DOM.
triggerHandler ne retourne pas d'objet jQuery,
elle retourne la valeur obtenue par le dernier
gestionnaire appelé. Si aucun gestionnaire n'est
déclenché, elle retourne undefined.
Syntaxe
En tant que premier paramètre, nous pouvons transmettre le type d'événement sous forme de chaîne, le deuxième paramètre optionnel étant un tableau ou un objet contenant des paramètres supplémentaires à transmettre au gestionnaire :
$(sélecteur).triggerHandler(type d'événement, [paramètres supplémentaires]);
Il est possible de transmettre en premier paramètre un événement
sous forme d'objet jQuery.Event :
$(sélecteur).trigger(événement, [paramètres supplémentaires]);
Exemple
Faisons en sorte que lors d'un clic sur le bouton
avec #test1 notre input obtienne le focus et
dans la console s'affiche 'Focused', en d'autres
mots - la fonction gestionnaire et l'événement de focus se déclencheront.
Lors d'un clic sur le deuxième bouton
avec #test2, seule la fonction gestionnaire se déclenchera,
mais l'input n'obtiendra pas le focus :
<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')
});