JavaScript事件委托

JavaScript事件委托

  • 原理:利用事件的冒泡原理,當你點擊ul>li時,會從最深的節點開始向外傳播li>ul,當ul里面有很多li時,可以把這一類的li的事件處理都委托給父級ul代為執行
  • 舉例
<ul id="ul1"> 
  <li>111</li>
  <li>222</li>
  <li>333</li>
  <li>444</li>
</ul>
//給每個li都綁定事件
window.onload = function(){ 
  let oUl = document.getElementById("ul1");
  let aLi = oUl.getElementsByTagName('li');
  for(let i=0;i<aLi.length;i++){
    aLi[i].onclick = function(){
      console.log(aLi[i].innerText);
    }
  }
}
//把所有的li事件都委托給父級ul來處理
window.onload = function(){
  let ul = document.getElementById("ul1");
  ul.onclick = function(event){
    let e = event || window.event;
   //標準瀏覽器用e.target,IE瀏覽器用event.srcElement
    let target = e.target || e.srcElement; 
    if(target.nodeName.toLowerCase() == 'li'){
        alert(target.innerHTML);
    }
  }
}
  • 總結:適合用事件委托的事件click,mousedown,mouseup,keydown,keyup,keypress
  • 優點:減少了事件處理程序,減少了內存占用
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 事件委托: 就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。原理(借鑒):事件委托是利用事...
    尤樊容閱讀 134評論 0 1
  • 15.1 問題 假如我們要對li的點擊事件進行處理,通常情況下我們會這么寫: 但是這里li有1000個,每個li都...
    農場主的雞閱讀 328評論 0 0
  • 總結: 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,631評論 2 10
  • 1,什么是事件委托:通俗的講,事件就是onclick,onmouseover,onmouseout,等就是事件,委...
    北方蜘蛛閱讀 210評論 0 1
  • “知識管理”是每個熱愛知識的人的剛需。 時常感覺自己“書到用時方恨少”、“話到嘴邊說不出”、“別人提起時知道一點兒...
    小可童鞋閱讀 290評論 0 0