jQuery .sur() avec plusieurs sélecteurs en cas de délégation?
J'ai l'aide de .on()
en jQuery 1.7 et je me demandais si il est possible de joindre plusieurs sélecteurs à la fois pour les éléments qui ont été injectés sur une page. Auparavant, j'ai été en utilisant live()
- mais il est évident pourquoi je veux déplacer compte tenu des améliorations de performances.
Pouvez-vous utiliser .on()
dans la manière comme:
$(document).on('click', '#selector1, #selector2, .class1', function () {
//stuff
});
Et quels sont les avantages perdus dans la fixation du document ?
?
Vous devez vous connecter pour publier un commentaire.
Oui, cela va fonctionner.
Il y a pas avantages de performance de l'aide que l'extrait de code plutôt que d'utiliser
live()
, commelive()
lui-même se lie événements du document, et en jQuery 1.7, des appels en directon
derrière les coulisses.L'inconvénient de liaison à
document
est que l'événement doit traverser l'ensemble de la liste des ancêtres avant elle est manipulée; ce, comme l'a souligné dans le jQuery documentation, est la plus lente possible d'itinéraire. Il sera mieux à gérer l'événement plus tôt, en attachant le gestionnaire à un élément plus près de la source de l'événement..on(
les sélecteurs sont à droite ? c'est à dire quelque chose comme$('.closer-parent-container').on('click', '#selector1, #selector2, .class1',
?.on()
sur doit être dans les DOM au moment de l'appel.on()
.$(this)
dans le sens que je veux cible#selector1, #selector2, .class1
par opposition à la.closer-parent-container
? à l'aide de$(this)
sélectionne maintenant.closer-parent-container
au lieu de ce que je veux -#selector1, #selector2, .class1
?c'est possible et que "cela" est cliqué sur le sélecteur, et non le document.
vous mieux de fixation pour le plus proche parent de l'élément de votre sélection. Lorsque vous cliquez sur '#selector1", l'événement de la bulle jusqu'à la gestionnaire d'événement élément, ici: document.
Les couches les plus, les plus les actions. En outre, si entre selector1 et document il y a un autre gestionnaire d'événements click, il peut être intercepté avec
event.stopPropagation();
, et de ne jamais atteindre le "document" de gestionnaire d'événements.vous pouvez vérifier les voyous de l'événement "interception" dans ce violon.