Heim >Web-Frontend >js-Tutorial >JS fügt Ereignisse zu dynamisch hinzugefügten Elementen hinzu (Code angehängt)

JS fügt Ereignisse zu dynamisch hinzugefügten Elementen hinzu (Code angehängt)

php中世界最好的语言
php中世界最好的语言Original
2018-05-03 16:25:512357Durchsuche

Dieses Mal bringe ich Ihnen JS zum Hinzufügen von Ereignissen zu dynamisch hinzugefügten Elementen (mit Code) Was sind die Vorsichtsmaßnahmen für das Hinzufügen von Ereignissen zu dynamisch hinzugefügten Elementen in JS? ein Blick.

Manchmal erstellen wir in der täglichen Entwicklung einige Elemente über js, aber wenn Sie die ursprüngliche for-Schleife verwenden, um Ereignisse zu den erstellten Knoten hinzuzufügen, funktioniert es oft nicht:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>js动态添加事件</title>
</head>
<body>
 <ul id="out-ul">
  <li class="out-li">123</li>
  <li class="out-li">123</li>
  <li class="out-li">123</li>
 </ul>
 <button id="btn">添加</button>
 <script>
  document.getElementById('btn').addEventListener('click',function(){
   var htmlFragment='<li>我是新增的li</li>';
   var addLi=document.createElement('li');
   addLi.innerHTML=htmlFragment;
   outUl.appendChild(addLi);
  },false);
  var outUl=document.getElementById('out-ul')
  var outLi=outUl.getElementsByClassName('out-li');
  for(var i=0;i<outLi.length;i++){
   outLi[i].onclick=function(){
    alert(1);
   }
  }
 </script>
</body>
</html>

Betriebseffekt:

Zum Beispiel können die über die for-Schleife zu li hinzugefügten Ereignisse nicht an das neu hinzugefügte li gebunden werden. Die detaillierten Gründe werden hier nicht erläutert. Wie kann man das lösen? Tatsächlich ist die Methode auch einfach: Lösen Sie sie durch Ereignisdelegation und geben Sie den Code einfach ein:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>www.jb51.net js动态添加事件</title>
</head>
<body>
 <ul id="out-ul">
  <li class="out-li">123</li>
  <li class="out-li">123</li>
  <li class="out-li">123</li>
 </ul>
 <button id="btn">添加</button>
 <script>
  var outUl=document.getElementById('out-ul')
  var outLi=outUl.getElementsByClassName('out-li');
  document.getElementById('btn').addEventListener('click',function(){
   var htmlFragment='<li>我是新增的li</li>';
   var addLi=document.createElement('li');
   addLi.innerHTML=htmlFragment;
   outUl.appendChild(addLi);
  },false);
  outUl.addEventListener('click',function(e){
   e=e || window.event;//兼容ie
   alert(e.target.innerHTML);
  }, false);
 </script>
</body>
</html>

Ich glaube, Sie beherrschen die Methode Nachdem Sie den Fall in diesem Artikel gelesen haben, achten Sie bitte auf andere verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Verwendung der JS-Ereignisdelegation

Detaillierte Erläuterung der Verwendung von Computed In Vue.js

Das obige ist der detaillierte Inhalt vonJS fügt Ereignisse zu dynamisch hinzugefügten Elementen hinzu (Code angehängt). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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