關於javascript中動態建立的節點怎麼繼續使用原方法。

  常常會在寫代碼的時候碰到一個問題,新建立的DOM節點不能像html中已經寫好的節點同樣使用已給定的樣式,也不能使用已經給定的方法,我總結的幾個方法以下:css


1.最基本的解決方式是事件委託,將事件委託給它的父元素,而後在使用target指向目標元素;html

    window.onload=function(){node

      let ul=document.getElementsByTagName("ul");      jquery

      let li=document.getElementsByTagName("li");app

      ul.onclick=function(e){this

        let evt=e || window.event;htm

        let target = evt.target || evt.srcElement;事件

        if(target.nodeName == "li"){字符串

          alert("11111");get

        }

      }

    }

這樣不管是已經給定的 li 仍是動態添加的 li 均可以點擊彈出 11111 了。


2.在綁定方法時,直接在動態生成的DOM裏添加上onclick方法;

HTML:ul.appendChild( `<li  onclick="fun(this)"></li>` ),使用了模板字符串;

JS:function fun(a){

    a.style.backgroundColor="red";

  }

這樣新添加的 li 在點擊時背景色會變紅;


3.jquery方法:on( ),相似於事件委託,給父元素綁定事件點擊子元素觸發;

HTML:ul.appendChild( `<li></li>` ).

JS:$("ul").on("click" , "li" , function(){

    $("li").css("background","red");

  })

這樣新添加的 li 在點擊時背景色會變紅;

相關文章
相關標籤/搜索