Maison >interface Web >js tutoriel >Comment puis-je conserver les écouteurs d'événements lors de la mise à jour du HTML interne d'un nœud DOM ?

Comment puis-je conserver les écouteurs d'événements lors de la mise à jour du HTML interne d'un nœud DOM ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 12:00:17800parcourir

How Can I Preserve Event Listeners When Updating a DOM Node's innerHTML?

Préservation des écouteurs d'événements lors de la modification de innerHTML

Lors de l'attribution au innerHTML d'un nœud DOM, tous les écouteurs d'événements attachés aux éléments descendants seront détruits. Cela peut être problématique si l'intention est d'ajouter du contenu supplémentaire sans compromettre la gestion des événements existants.

Solution : insertAdjacentHTML

La méthode .insertAdjacentHTML() fournit une solution qui préserve écouteurs d'événements lors de la modification de innerHTML. En spécifiant l'emplacement du contenu inséré à l'aide de « afterend », il est possible d'ajouter du contenu sans affecter la structure DOM existante ou ses gestionnaires d'événements.

Exemple :

Considérez l'extrait de code suivant :

var mydiv = document.getElementById('mydiv');

// Appending content using .innerHTML (destroys event listeners)
mydiv.innerHTML += '<p>New paragraph</p>';

// Appending content using .insertAdjacentHTML (preserves event listeners)
mydiv.insertAdjacentHTML('beforeend', '<p>New paragraph</p>');

Dans cet exemple, la méthode .insertAdjacentHTML() a réussi ajoute un nouveau paragraphe à l'élément #mydiv tout en préservant les écouteurs d'événements existants. Cette approche peut être appliquée à tout élément DOM nécessitant une modification de contenu sans compromettre sa gestion des événements.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Mon parcours React : jour 17Article suivant:Mon parcours React : jour 17