11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour à toutes et à tous,

La fonction removeChild(MonElement) permet de supprimer un élément fils MonElment.
Jusque là, pas de soucis.

La question que je me pose est la suivante :
Dans le cas d'une "cascade" d'éléments, disons 5 niveaux, si je supprime le premier enfant, les autres enfants sont supprimés en automatique ?
question subsidiaire : les évènements associés aux enfants successifs sont-ils supprimés aussi ?

merci de vos lumières Smiley cligne
Bonsoir,

1 - Oui, lorsque tu retires un élément du DOM, ses enfants sont retirés aussi, puisque tu enlèves le noeud, et donc ce qu'il contient.

2 - Non, les évenements ne sont pas supprimés lorsque tu supprimes un noeud, les écouteurs eux existent toujours, même si le noeud n'est plus présent dans le DOM. Il te faut toi même les "remove" si tu veux une application propre.
Modifié par n3k0 (24 Feb 2012 - 23:59)
a écrit :

2 - Non, les évenements ne sont pas supprimés lorsque tu supprimes un noeud, les écouteurs eux existent toujours, même si le noeud n'est plus présent dans le DOM. Il te faut toi même les "remove" si tu veux une application propre.


Ça ne dépend pas du noeud sur lequel sont positionnés les listener ?

Si je ne me trompe pas, si le listener est relié directement à l'élément du DOM retiré, il sera également supprimé. Mais s'il est situé sur un noeud parent (utilisant le event bubbling donc), alors là non, l'évènement ne sera pas supprimé.