JavaScript事件委托

JavaScript事件委托

  • 原理:利用事件的冒泡原理,當(dāng)你點(diǎn)擊ul>li時(shí),會(huì)從最深的節(jié)點(diǎn)開(kāi)始向外傳播li>ul,當(dāng)ul里面有很多li時(shí),可以把這一類的li的事件處理都委托給父級(jí)ul代為執(zhí)行
  • 舉例
<ul id="ul1"> 
  <li>111</li>
  <li>222</li>
  <li>333</li>
  <li>444</li>
</ul>
//給每個(gè)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事件都委托給父級(jí)ul來(lái)處理
window.onload = function(){
  let ul = document.getElementById("ul1");
  ul.onclick = function(event){
    let e = event || window.event;
   //標(biāo)準(zhǔn)瀏覽器用e.target,IE瀏覽器用event.srcElement
    let target = e.target || e.srcElement; 
    if(target.nodeName.toLowerCase() == 'li'){
        alert(target.innerHTML);
    }
  }
}
  • 總結(jié):適合用事件委托的事件click,mousedown,mouseup,keydown,keyup,keypress
  • 優(yōu)點(diǎn):減少了事件處理程序,減少了內(nèi)存占用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 事件委托: 就是利用事件冒泡,只指定一個(gè)事件處理程序,就可以管理某一類型的所有事件。原理(借鑒):事件委托是利用事...
    尤樊容閱讀 152評(píng)論 0 1
  • 15.1 問(wèn)題 假如我們要對(duì)li的點(diǎn)擊事件進(jìn)行處理,通常情況下我們會(huì)這么寫: 但是這里li有1000個(gè),每個(gè)li都...
    農(nóng)場(chǎng)主的雞閱讀 356評(píng)論 0 0
  • 總結(jié): 鼠標(biāo)事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,719評(píng)論 2 10
  • 1,什么是事件委托:通俗的講,事件就是onclick,onmouseover,onmouseout,等就是事件,委...
    北方蜘蛛閱讀 234評(píng)論 0 1
  • “知識(shí)管理”是每個(gè)熱愛(ài)知識(shí)的人的剛需。 時(shí)常感覺(jué)自己“書(shū)到用時(shí)方恨少”、“話到嘴邊說(shuō)不出”、“別人提起時(shí)知道一點(diǎn)兒...
    小可童鞋閱讀 339評(píng)論 0 0

友情鏈接更多精彩內(nèi)容