Est-il possible de déléguer un événement en utilisant jQuery qui correspondra à tous les éléments sur la page qui correspondent à la sélection, autre que la délégation de $(document)
?délégation d'événements jQuery 1.7.2
Puisque c'est probablement mal formulé, voici le hic:
Il y avait jQuery.live
que délégué des événements à tous les éléments qui correspondent le sélecteur. Cela a été remplacé par jQuery.delegate
qui a délégué des événements dans un sélecteur de contexte spécifique à ses enfants, qui à son tour a été remplacé par jQuery.on
, ce qui fait effectivement la même chose, mais avec des bits différents dans les coulisses (j'imagine). Ce que je veux faire, est d'ajouter en toute sécurité un gestionnaire d'événements à chaque div.foo
sur ma page, peu importe où il pourrait vivre, ou quand il pourrait vivre. Selon la documentation, et la recherche empirique, ce qui suit se liera uniquement aux éléments .foo
qui existent lors de l'exécution du script. Comme il y a du code qui pourrait placer un élément .foo
sur la page plus tard, cela ne fonctionne pas exactement.
jQuery('.foo').on('click', handler);
Depuis live
est dépréciée (peut-être enlevé?), J'essaie de ne pas utiliser, mais la seule solution que je peux trouver est
jQuery(document).on('click', '.foo', handler);
Mais est-ce pas ce que live
fait à l'origine, dans les coulisses? Plus précisément, y at-il des raisons significatives pas pour ce faire?
Nous sommes spécifiquement en utilisant la version 1.7.2, mais les réponses jQuery génériques aiderions aussi.
C'est ce que 'live' a fait à l'origine, mais c'est aussi exactement ce que vous cherchez. Idéalement, vous utiliseriez autre chose que 'document', mais si vous ne pouvez pas le réduire, alors' document' est votre seul choix. –
@ JamesMontagne oui je m'en doutais autant. Je ne savais pas s'il y avait une raison de ne pas déléguer au document, à part le fait que 'stopPropagation' pourrait gêner. –
Performances également. Il doit faire des bulles tout le long et chaque clic sur la page est intercepté et vérifié pour voir si c'est le bon sélecteur. –