e.target與e.currentTarget對(duì)象的使用區(qū)別詳解
背景
大家開發(fā)中經(jīng)常會(huì)跟DOM的事件打交道,也會(huì)經(jīng)常用到e.target
和e.currentTarget
這兩個(gè)對(duì)象,但是卻有很多人根本就不知道這兩個(gè)有什么區(qū)別~~~
冒泡 & 捕獲
當(dāng)你觸發(fā)一個(gè)元素的事件的時(shí)候,該事件從該元素的祖先元素傳遞下去,此過程為捕獲,而到達(dá)此元素之后,又會(huì)向其祖先元素傳播上去,此過程為冒泡
<div id="a"> <div id="b"> <div id="c"> <div id="d">哈哈哈哈哈</div> </div> </div> </div>
addEventListener
addEventListener
是為元素綁定事件的方法,他接收三個(gè)參數(shù):
第一個(gè)參數(shù):綁定的事件名
第二個(gè)參數(shù):執(zhí)行的函數(shù)
第三個(gè)參數(shù):
- false:默認(rèn),代表冒泡時(shí)綁定
- true:代表捕獲時(shí)綁定
target & currentTarget
false
我們給四個(gè)div元素綁定事件,且addEventListener
第三個(gè)參數(shù)不設(shè)置,則默認(rèn)設(shè)置為false
const a = document.getElementById('a') const b = document.getElementById('b') const c = document.getElementById('c') const d = document.getElementById('d') a.addEventListener('click', (e) => { const { target, currentTarget } = e console.log(`target是${target.id}`) console.log(`currentTarget是${currentTarget.id}`) }) b.addEventListener('click', (e) => { const { target, currentTarget } = e console.log(`target是${target.id}`) console.log(`currentTarget是${currentTarget.id}`) }) c.addEventListener('click', (e) => { const { target, currentTarget } = e console.log(`target是${target.id}`) console.log(`currentTarget是${currentTarget.id}`) }) d.addEventListener('click', (e) => { const { target, currentTarget } = e console.log(`target是${target.id}`) console.log(`currentTarget是${currentTarget.id}`) })
現(xiàn)在我們點(diǎn)擊,看看輸出的東西,可以看出觸發(fā)的是d,而執(zhí)行的元素是冒泡的順序
target是d currentTarget是d
target是d currentTarget是c
target是d currentTarget是b
target是d currentTarget是a
true
我們把四個(gè)事件第三個(gè)參數(shù)都設(shè)置為true
,我們看看輸出結(jié)果,可以看出觸發(fā)的是d,而執(zhí)行的元素是捕獲的順序
target是d currentTarget是a
target是d currentTarget是b
target是d currentTarget是c
target是d currentTarget是d
區(qū)別
我們可以總結(jié)出:
e.target
:觸發(fā)事件的元素
e.currentTarget
:綁定事件的元素
以上就是e.target與e.currentTarget對(duì)象的使用區(qū)別詳解的詳細(xì)內(nèi)容,更多關(guān)于e.target與e.currentTarget區(qū)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JSON基本語(yǔ)法及與JavaScript的異同實(shí)例分析
這篇文章主要介紹了JSON基本語(yǔ)法及與JavaScript的異同,結(jié)合實(shí)例形式分析了json簡(jiǎn)單值、對(duì)象、數(shù)組三種類型值使用技巧,需要的朋友可以參考下2019-01-01基于javascript制作經(jīng)典傳統(tǒng)的拼圖游戲
這篇文章主要為大家詳細(xì)介紹了基于javascript制作拼圖游戲的相關(guān)內(nèi)容,經(jīng)典傳統(tǒng)的拼圖游戲是大家最喜愛的游戲之一,具有挑戰(zhàn)性,感興趣的小伙伴們可以參考一下2016-03-03js實(shí)現(xiàn)簡(jiǎn)單的二級(jí)聯(lián)動(dòng)效果
本文主要介紹了js實(shí)現(xiàn)簡(jiǎn)單的二級(jí)聯(lián)動(dòng)效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03深入理解JavaScript中實(shí)例對(duì)象和new命令
典型的面向?qū)ο缶幊陶Z(yǔ)言(比如C++和 Java),都有“類”(class)這個(gè)概念。所謂“類”就是對(duì)象的模板,對(duì)象就是“類”的實(shí)例,下面這篇文章主要給大家介紹了關(guān)于JavaScript中實(shí)例對(duì)象和new命令的相關(guān)資料,需要的朋友可以參考下2022-12-12兩個(gè)JS之間的函數(shù)互相調(diào)用方式
這篇文章主要介紹了兩個(gè)JS之間的函數(shù)互相調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03js實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接的方法
這篇文章主要介紹了js如何實(shí)現(xiàn)連個(gè)數(shù)字相加而不是拼接,需要的朋友可以參考下2014-02-02基于OL2實(shí)現(xiàn)百度地圖ABCD marker的效果
js判斷瀏覽器類型及設(shè)備(移動(dòng)頁(yè)面開發(fā))
這篇文章主要介紹了js判斷瀏覽器類型及設(shè)備(移動(dòng)頁(yè)面開發(fā)),需要的朋友可以參考下2015-07-07js彈性勢(shì)能動(dòng)畫之拋物線運(yùn)動(dòng)實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了js彈性勢(shì)能動(dòng)畫之拋物線運(yùn)動(dòng)的制作方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07