綁定事件優(yōu)化---事件代理

在DOM事件對(duì)象中有兩個(gè)屬性總是時(shí)不時(shí)的困擾我,就是target和currentTarget,有時(shí)候很迷惑分不清兩者的區(qū)別,因此有必要把這兩個(gè)屬性好好梳理一下,加深理解,以便日后的查詢。
MDN中對(duì)target的解釋為,一個(gè)觸發(fā)事件的對(duì)象的引用, 當(dāng)事件處理程序在事件的冒泡或捕獲階段被調(diào)用時(shí)。
而對(duì)于currentTarget,它指的是當(dāng)事件遍歷DOM時(shí),標(biāo)識(shí)事件的當(dāng)前目標(biāo)。它總是引用事件處理程序附加到的元素,而不是event.target,它標(biāo)識(shí)事件發(fā)生的元素。
舉個(gè)例子來(lái)說(shuō)明。

<!DOCTYPE html>
 <html>
 <head> 
<meta charset="utf-8"> 
<title>JS Bin</title> 
</head>
 <body>
 <ul> <li>hello 1</li> <li>hello 2</li> <li>hello 3</li> <li>hello 4</li> </ul> 
<script>
 let ul = document.querySelectorAll('ul')[0] 
let aLi = document.querySelectorAll('li')
 ul.addEventListener('click',function(e){ let oLi1 = e.target let oLi2 = e.currentTarget console.log(oLi1) 
// 被點(diǎn)擊的li 
console.log(oLi2) // ul 
console.og(oLi1===oLi2) // false }) 
</script> </body> </html>

我們知道,e.target可以用來(lái)實(shí)現(xiàn)事件委托,該原理是通過(guò)事件冒泡(或者事件捕獲)給父元素添加事件監(jiān)聽,e.target指向引發(fā)觸發(fā)事件的元素,如上述的例子中,e.target指向用戶點(diǎn)擊的li,由于事件冒泡,li的點(diǎn)擊事件冒泡到了ul上,通過(guò)給ul添加監(jiān)聽事件而達(dá)到了給每一個(gè)li添加監(jiān)聽事件的效果,而e.currentTarget指向的是給綁定事件監(jiān)聽的那個(gè)對(duì)象,即ul,從這里可以發(fā)現(xiàn),e.currentTarget===this返回true,而e.target===this返回false。e.currenttarget和e.target是不相等的。

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點(diǎn)的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點(diǎn)是DOM的常...
    凜0_0閱讀 1,527評(píng)論 0 8
  • js之事件機(jī)制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驅(qū)動(dòng)...
    道無(wú)虛閱讀 2,639評(píng)論 0 2
  • 總結(jié): 鼠標(biāo)事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,724評(píng)論 2 10
  • 第1章 鼠標(biāo)事件 1-1 jQuery鼠標(biāo)事件之click與dbclick事件 用交互操作中,最簡(jiǎn)單直接的操作就是...
    mo默22閱讀 1,351評(píng)論 0 6
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,715評(píng)論 1 11

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