【原生js】js動態添加dom,如何綁定事件


      首先要明白瀏覽器在加載頁面的時候是按順序來加載的,這樣以來就很清楚了,js動態添加dom以后,這些dom並沒有綁定事件,這個時候最簡單的一個辦法就是:將綁定事件的方法封裝到一個函數A中,在動態添加完dom以后立即執行一次函數A即可。

       需要注意的是,在你可能同時需要添加許多的dom,不要添加一個就執行一次函數A,這樣會增加瀏覽器的負載,你需要在所有dom添加完以后在執行函數A,例如你用一個for循環遍歷dom組合並拼接成一個字符串,然后添加到某個父級dom里面,這個時候你需要在循環外添加一次就可以了。

  代碼如下:

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>添加div並綁定點擊事件</title>
 6     <style>
 7         div.btn{
 8             width: 200px;
 9             height: 50px;
10             line-height: 50px;
11             text-align: center;
12             border: solid 1px #000;
13             cursor: pointer;
14         }
15         div.innerDiv{
16             width: 50px;
17             height: 50px;
18             background-color: black;
19             margin: 10px;
20             cursor: pointer;
21         }
22     </style>
23 </head>
24 <body>
25 <div class="aa">
26     <div class="btn">添加div並綁定點擊事件</div>
27     <div class="outerDiv"></div>
28 </div>
29 <script>
30     function getClass(classname) {
31         return document.getElementsByClassName(classname);
32     }
33     getClass('btn')[0].onclick=function () {
34         addDom();
35     }
36 //    將點擊事件封裝為函數
37     function funA() {
38         for(var i=0;i<getClass('innerDiv').length;i++){
39             getClass('innerDiv')[i].onclick=function () {
40                 alert(this.innerText);
41             }
42         }
43     }
44 //    將添加dom封裝為函數
45     function addDom() {
46         var oldHtml='';
47         for(var j=0;j<6;j++){
48             oldHtml+='<div class="innerDiv">'+j+'</div>'
49         }
50         getClass('outerDiv')[0].innerHTML=oldHtml;
51         funA();
52     }
53 //    如果將函數A放在這里就不會起作用的
54 //    funA();
55 </script>
56 </body>
57 </html>

 

個人博客:[**午后南雜**](http://recoluan.gitlab.io)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM