Il y a beaucoup de réponses, chacune touchant à quelques points - j'espère que cela peut vous donner votre réponse, avec une bonne explication de quoi et comment l'utiliser.
L'utilisation click()
est un alias de bind('click' ...)
. L'utilisation bind()
prend le DOM tel qu'il est lorsque l'écouteur d'événements est en cours de configuration et lie la fonction à chacun des éléments correspondants dans le DOM. C'est-à-dire que si vous l'utilisez, $('a').click(...)
vous lierez la fonction fournie à l'événement click de chaque balise d'ancrage dans le DOM trouvée lorsque ce code s'exécute.
L'utilisation live()
était à l'ancienne dans jQuery; il a été utilisé pour lier des événements comme le bind()
fait, mais il ne les lie pas seulement aux éléments dans le DOM lorsque le code s'exécute - il écoute également les changements dans le DOM et liera également les événements à tous les éléments futurs. Ceci est utile si vous effectuez une manipulation DOM et que vous avez besoin d'un événement sur certains éléments qui peuvent être supprimés / mis à jour / ajoutés au DOM plus tard, mais qui n'existent pas lorsque le DOM est chargé pour la première fois.
La raison qui live()
est maintenant dépréciée est parce qu'elle a été mal appliquée. Pour l'utiliser live()
, vous deviez pouvoir sélectionner au moins un élément dans le DOM au départ (je crois). Cela provoquait également l'exécution d'une copie de la fonction liée à chaque élément - et si vous avez 1000 éléments, c'est beaucoup de fonctions copiées.
La création de la on()
fonction visait à surmonter ces problèmes. Il vous permet de lier un seul écouteur d'événement à un objet qui ne changera pas dans le DOM (vous ne pouvez donc pas utiliser on()
sur un élément qui sera supprimé / ajouté au DOM plus tard - liez-le à un objet parent), et appliquez simplement un élément "filtre" pour que la fonction ne soit exécutée que lorsqu'elle est remontée jusqu'à un élément qui correspond au sélecteur. Cela signifie que vous n'avez qu'une seule fonction qui existe (pas un tas de copies) liée à un seul élément - une bien meilleure approche pour ajouter des événements "en direct" dans le DOM.
... et c'est ce que sont les différences, et pourquoi chaque fonction existe et pourquoi live()
est dépréciée.
on
àclick
cause enclick
tant que sons de nom de la fonction comme un verbe, une action, quand ce qu'il fait est pas de cliquer sur l'élément (comme vous pouvez le faire avec la mêmeclick
fonction)