ホームページ  >  記事  >  ウェブフロントエンド  >  動的に追加された要素にイベント関数を追加するJS実装例

動的に追加された要素にイベント関数を追加するJS実装例

亚连
亚连オリジナル
2018-05-26 17:30:001819ブラウズ

この記事では、動的に追加された要素にイベントを追加する JS 実装を主に紹介し、動的に追加された要素にイベントを追加するためのイベント委任に基づいた JavaScript の関連操作スキルを分析します。では、動的に追加された要素にイベント関数を追加する JS 実装について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

日常の開発では js を使用していくつかの要素を作成することがありますが、作成したノードにイベントを追加するために独自の for ループを使用すると、動作しないことがよくあります:

<!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>
  document.getElementById(&#39;btn&#39;).addEventListener(&#39;click&#39;,function(){
   var htmlFragment=&#39;<li>我是新增的li</li>&#39;;
   var addLi=document.createElement(&#39;li&#39;);
   addLi.innerHTML=htmlFragment;
   outUl.appendChild(addLi);
  },false);
  var outUl=document.getElementById(&#39;out-ul&#39;)
  var outLi=outUl.getElementsByClassName(&#39;out-li&#39;);
  for(var i=0;i<outLi.length;i++){
   outLi[i].onclick=function(){
    alert(1);
   }
  }
 </script>
</body>
</html>

動作効果:

たとえば、for ループを通じて li に追加されたイベントは、新しく追加された li にバインドできません。詳しい理由はここでは説明しません。では、これをどうやって解決するのでしょうか? 実際、その方法も簡単で、上記のコードを次のように変更するだけです:

以上が私がまとめたものです 皆様、今後の皆様のお役に立てれば幸いです。

関連記事:

Ajax 都市名を通じてデータを取得する

MVC がブートストラップを満たした後の Ajax フォーム検証


AJAX リクエストキューの実装


以上が動的に追加された要素にイベント関数を追加するJS実装例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。