À l'aide de Jquery off " (éteint).sur() ou()
Je sais que nous pouvons associer des événements avec jQuery on()
de la fonction et de les supprimer à nouveau avec off()
.
Dans un projet existant, je fais parfois trouver un code similaire à ceci:
$("#SomeId").off("click").on("click");
ou parfois lors de l'utilisation de namespacing similaire à ceci:
$("#SomeId").off("click.namespace").on("click.namespace");
pour autant Que je sais vous ne pouvez joindre qu'un seul événement à un espace de noms spécifique de l'événement.
Par exemple, si je ne on("click")
va s'attacher ma fonction spécifiée, l'écrasement de la fonction en cours affecté, en ajoutant à l'événement "click".
Si je ne on("click.namespace")
va s'attacher ma fonction spécifiée l'écrasement de la fonction en cours affecté, en ajoutant à la click.namespace
.
Quel est le point de retrait de tous les événements en enchaînant une off("click")
à la on("click)
si on()
déjà remplace toutes les fonctions attribuées à l'événement précis/l'événement.espace de noms?
Est-il redondant syntaxe dans notre code ou il y a une raison pour ça que j'ai raté?
Edit - Merci kapa
Je me sens un peu idiot maintenant, j'ai corrigé mon défectueux connaissances ci-dessus. L'exécution de on("click.namespace1")
plusieurs fois, j'ai observé maintenant que le data("events")
objet continué à ajouter à l'événement click du tableau.
Je pense que ça répond à ma propre question, il. C'est pourquoi l'un serait d'utiliser off("event.namespace")
pour ne rien d'autre est attaché à cette exacte de l'événement/événement.espace de noms.
Vous devez vous connecter pour publier un commentaire.
En fait, vous pouvez joindre plusieurs gestionnaires d'événements pour le même événement, pas seulement un. Même lorsque les espaces de noms sont utilisés. Découvrez cette rapide démonstration.
En fait, l'un des avantages des espaces de noms, c'est que vous pouvez marquer un groupe de gestionnaires d'événements, et de retirer facilement plus tard pour éviter de joindre plusieurs fois. C'est ce que cette ligne n':
data("events")
objet. Je vous remercie pour votre réponse.Vous pouvez essayer de
.one('click.namspace')
au lieu de.on('click.namespace')
.De cette façon, vous vous assurez que le clic n'est pas appelé plus de une fois, sinon, le
.on(...)
ne garde que l'ajout declick-event-handlers (clickCBs)
à laclick.namespace
événement surp
élément, et sera appelé à plusieurs reprises avant de le.off()
est déclenchée.Bonne Chance...
Si il existe déjà un virage (comme vous pouvez avoir plus d'un, dans ce cas, ils auront de la chaîne), et il appelle .stopPropagation(), vos mains ne sera pas appelé. Écrire le code comme ci-dessus vous permettra d'éviter ce problème.