Méthode off
La méthode off permet de détacher un gestionnaire
d'événements d'un élément. Pour attacher un gestionnaire,
vous pouvez utiliser la méthode
off.
Syntaxe
Ainsi, nous supprimons un gestionnaire d'événements d'un élément.
Le premier paramètre, sous forme de chaîne de caractères,
transmet un ou plusieurs événements séparés par des espaces.
Le deuxième - nous transmettons un sélecteur de filtre supplémentaire
pour les descendants à l'intérieur de l'élément
(il doit correspondre à celui que nous avons transmis à
la méthode on lors de l'attachement du gestionnaire).
Pour supprimer tous les événements délégués,
transmettez la valeur '**'. Le deuxième paramètre
est facultatif. Le troisième transmet la fonction gestionnaire
(que nous avons attachée), à laquelle l'objet événement est
transmis, ou nous transmettons false :
$(sélecteur).off(événements, [sélecteur], fonction-gestionnaire(objet événement));
Vous pouvez utiliser la méthode off différemment.
Alors, le premier paramètre transmet un
objet JavaScript où les clés sont le type d'événement et
les valeurs sont les fonctions gestionnaires que nous avons ajoutées
à l'élément :
$(sélecteur).off({'type événement': handler}, [sélecteur]);
Nous pouvons simplement transmettre un paramètre sous la forme
d'un objet jQuery.Event :
$(sélecteur).off(événement);
Si aucun paramètre n'est transmis à la méthode, nous détacherons tous les gestionnaires attachés de l'élément :
$(sélecteur).off();
Exemple
Ajoutons la fonction gestionnaire
testFunc aux paragraphes.
Mais supprimons immédiatement le gestionnaire du
deuxième paragraphe. Ainsi, un clic sur le deuxième paragraphe ne
provoquera rien (si nous commentons la dernière
ligne de code, nous verrons comment l'événement se déclenche
également lors d'un clic sur le deuxième paragraphe) :
<p id="test1">click1</p>
<p id="test2">click2</p>
function testFunc(event) {
alert(event.data.text);
}
$('#test1').on('click', {text: 'aaa'}, testFunc); // ajoute un gestionnaire
$('#test2').on('click', {text: 'bbb'}, testFunc); // ajoute un gestionnaire
$('#test2').off('click', testFunc); // supprime le gestionnaire