Sont des événements perdu dans jQuery lorsque vous supprimez() sur un élément et append() il ailleurs?
Ce qui se passe dans jQuery lorsque vous supprimez() sur un élément et append() ailleurs?
Il semble que les événements sont décrochés - comme si vous étiez juste en l'insérant fraîche html (qui je suppose est ce qui se passe). Mais il est aussi possible que mon code a un bug alors je voulais juste vérifier ce comportement avant que je continue.
Si c'est le cas, y a des moyens faciles de rehookup les événements à la portion de HTML, ou une autre façon de déplacer l'élément sans perdre l'événement en premier lieu.
Vous devez vous connecter pour publier un commentaire.
Oui, jQuery approche avec
remove()
est de séparer le tout lié avec jQuery proprebind
(pour éviter les fuites de mémoire).Toutefois, si vous voulez juste passer quelque chose dans les DOM, vous n'avez pas à
remove()
en premier. Justeappend
au contenu de votre coeur, l'événement liaisons sera rester dans les parages 🙂Par exemple, collez-le dans votre firebug sur cette page:
Et maintenant, faites défiler vers le bas de cette page et cliquez sur le petit globy icône est enterré dans le pied de page. Vous obtiendrez la
alert
. Tous parce que j'ai pris soin de ne pasremove
en premier.Le jQuery detach() fonction est la même que remove() mais conserve les gestionnaires d'événements dans l'objet auquel il renvoie. Si vous devez retirer l'élément et le placer ailleurs avec tout ce que vous pouvez simplement utiliser ce.
Vérifier l'API docs ici: http://api.jquery.com/detach/
utilisation jQuery1.3.1 live() pour lier les événements et vous n'aurez pas besoin de vous inquiéter à ce sujet..
Mise à jour: les événements en direct sont obsolètes maintenant, mais vous pouvez obtenir le même effet, à partir de $(document).sur().