Heim > Web-Frontend > js-Tutorial > Wie kann ich den Verlust des Ereignis-Listeners verhindern, wenn ich innerHTML ändere?

Wie kann ich den Verlust des Ereignis-Listeners verhindern, wenn ich innerHTML ändere?

Patricia Arquette
Freigeben: 2024-12-15 19:40:19
Original
533 Leute haben es durchsucht

How Can I Prevent Event Listener Loss When Modifying innerHTML?

Ereignis-Listener beim Anhängen an innerHTML beibehalten

Beim Zuweisen zum innerHTML eines übergeordneten Knotens können an Nachkommen angehängte Ereignishandler zerstört werden. Betrachten Sie zum Beispiel den Code unten:

<div><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>
Nach dem Login kopieren

<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">Nach dem Login kopieren</div></div> <p></script&gt ;<br></pre></p> <p>Hier das Onclick-Event Der an den Span angehängte Handler, der „foo“ enthält, wird nach der Zuweisung zu mydiv.innerHTML zerstört.</p> <p>Um dieses Problem zu vermeiden, verwenden Sie die Methode .insertAdjacentHTML() anstelle von .innerHTML. Diese Methode behält Ereignis-Listener bei und wird von allen gängigen Browsern unterstützt.</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">Nach dem Login kopieren</div></div> <p></script>

Das Argument „beforeend“ gibt an, wo im Element der HTML-Inhalt eingefügt werden soll. Weitere Optionen sind „beforebegin“, „afterbegin“ und „afterend“.

Das obige ist der detaillierte Inhalt vonWie kann ich den Verlust des Ereignis-Listeners verhindern, wenn ich innerHTML ändere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Vorheriger Artikel:Warum aktualisiert „setState“ den Status der React-Komponente nicht sofort? Nächster Artikel:Warum schlägt „$(this)“ in jQuery-Click-Handlern mit ES6-Pfeilfunktionen fehl?
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage