Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faut-il "remove" the events ?

quand on supprime un élément du DOM

Sujet résolu
    7 août 2020 à 16:40:42

    Bonjour,

    Mon script ajoute des div au DOM avec un événement clickable dessus, comme ça :

    // On rempli le DIV PARENT
    if(tab[0].length){
        for (var element of tab) {
            newDiv = document.createElement('div');
            newDiv.innerHTML = element;
            
            // On ajoute le child
            res.appendChild(newDiv);
            
            // On ajoute l'évènement
            res.lastChild.addEventListener('click', clickChoice);
        }
    }

    Ensuite, souvent, je dois les retirer, je fais comme ça :

    // On supprime tous les CHILD
    if(res.hasChildNodes()){
        var childs = res.querySelectorAll('div');
        for (var child of childs){
            child.removeEventListener('click', clickChoice);
            res.removeChild(child);
        }
    }

    Mes questions :

    • Est-il nécessaire de faire removeChild, alors qu'il me suffirai de faire res.innerHTML='';
    • Est-il nécessaire de faire un remove de l'event ? est-ce overkill ?



    • Partager sur Facebook
    • Partager sur Twitter
      8 août 2020 à 4:19:47

      Bonjour si tu vide la structure HTML avec res.innerHTML = "";

      cela détruit aussi les événements qui été attaché dans la structure,

      dans ton cas tu n'en n'aurais visiblement pas besoin ( du remove event ), mais dans d'autre contexte ne pas supprimé un événement avant d'en rattaché  un pourrait les faire "s'empilé" les un sur les autres ( plusieurs événement identique sur le même élément ).

      • Partager sur Facebook
      • Partager sur Twitter

      suggestion de présentation.

      Faut-il "remove" the events ?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown