自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

e.target 和 e.currentTarget 的區(qū)別?你到底知不知道?

開發(fā) 前端
大家開發(fā)中經(jīng)常會(huì)跟DOM的事件打交道,也會(huì)經(jīng)常用到??e.target??和??e.currentTarget??這兩個(gè)對象,看看它們有什么區(qū)別!

背景

大家開發(fā)中經(jīng)常會(huì)跟DOM的事件打交道,也會(huì)經(jīng)常用到??e.target??和??e.currentTarget??這兩個(gè)對象,但是卻有很多人根本就不知道這兩個(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ù):

  • false:默認(rèn),代表冒泡時(shí)綁定
  • true:代表捕獲時(shí)綁定
  • 第一個(gè)參數(shù):綁定的事件名
  • 第二個(gè)參數(shù):執(zhí)行的函數(shù)
  • 第三個(gè)參數(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??:綁定事件的元素
責(zé)任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2024-04-03 10:24:01

e.targetDOM元素

2022-02-25 11:04:21

Reactlanelanes

2020-08-10 07:58:18

異步編程調(diào)用

2015-10-09 08:57:21

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2011-09-15 17:10:41

2022-10-13 11:48:37

Web共享機(jī)制操作系統(tǒng)

2009-12-10 09:37:43

2021-02-01 23:23:39

FiddlerCharlesWeb

2010-08-23 09:56:09

Java性能監(jiān)控

2015-06-11 16:48:46

2020-09-15 08:35:57

TypeScript JavaScript類型

2022-11-04 08:19:18

gRPC框架項(xiàng)目

2013-09-09 09:59:39

虛擬化云計(jì)算

2017-03-13 10:35:10

JavaScript錯(cuò)誤調(diào)用棧

2021-12-29 11:38:59

JS前端沙箱

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2012-11-23 10:57:44

Shell

2015-06-19 13:54:49

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號