Maison > interface Web > js tutoriel > Comment puis-je empêcher la perte de l'écouteur d'événements lors de la modification de innerHTML ?

Comment puis-je empêcher la perte de l'écouteur d'événements lors de la modification de innerHTML ?

Patricia Arquette
Libérer: 2024-12-15 19:40:19
original
533 Les gens l'ont consulté

How Can I Prevent Event Listener Loss When Modifying innerHTML?

Préservation des écouteurs d'événements lors de l'ajout à innerHTML

Lors de l'attribution au innerHTML d'un nœud parent, les gestionnaires d'événements attachés aux descendants peuvent être détruits. Par exemple, considérons le code ci-dessous :

<div><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>
Copier après la connexion

<script></p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mydiv = document.getElementById(&quot;mydiv&quot;); mydiv.innerHTML += &quot;bar&quot;;</pre><div class="contentsignin">Copier après la connexion</div></div> <p></script&gt ;<br></pre></p> <p>Ici, le gestionnaire d'événements onclick attaché au span contenant "foo" est détruit après l'affectation à mydiv.innerHTML.</p> <p>Pour éviter ce problème, utilisez la méthode .insertAdjacentHTML() au lieu de .innerHTML. Cette méthode préserve les écouteurs d'événements et est prise en charge par tous les principaux navigateurs.</p> <p><pre class="brush:php;toolbar:false">&lt;script&gt;&lt;/p&gt; &lt;div class=&quot;code&quot; style=&quot;position:relative; padding:0px; margin:0px;&quot;&gt;&lt;pre class=&quot;brush:php;toolbar:false&quot;&gt;var html_to_insert = &quot;&lt;p&gt;New paragraph&lt;/p&gt;&quot;; document.getElementById('mydiv').insertAdjacentHTML('beforeend', html_to_insert);</pre><div class="contentsignin">Copier après la connexion</div></div> <p></script>

L'argument 'beforeend' spécifie où dans l'élément insérer le contenu HTML. D'autres options incluent « avant le début », « après le début » et « après la fin ».

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!

source:php.cn
Article précédent:Pourquoi « setState » ne met-il pas à jour immédiatement l'état du composant React ? Article suivant:Pourquoi `$(this)` échoue-t-il dans les gestionnaires de clics jQuery avec les fonctions fléchées ES6 ?
Déclaration de ce site Web
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
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal