e.target 和 e.currentTarget 的区别

背景

最近在开发中遇到对DOM元素的操作,用到e.target和e.currentTarget这两个对象,但是却有点分不清楚。

冒泡和捕获

当用户操作触发一个元素的事件的时候,该事件从该元素的祖先元素传递下去,此过程为捕获,而到达此元素之后,又会向其祖先元素传播上去,此过程为冒泡。
再此就要提到addEventListener,addEventListener是为元素绑定事件的方法,它接收三个参数:

第一个参数:绑定的事件名
第二个参数:执行的函数
第三个参数:
false:默认,代表冒泡时绑定
true:代表捕获时绑定

页面创建3个div元素,并绑定对应的id

<div id="a">
      <div id="b">
        <div id="c">
        	点击我
        </div>
      </div>
    </div>

我们给3个div元素绑定点击事件,且addEventListener第三个参数默认设置为false,就代表冒泡时绑定

const a = document.getElementById('a')
const b = document.getElementById('b')
const c = document.getElementById('c')
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}`)
})

打印出来的内容:
显而易见的冒泡捕获的顺序

target对应的是d currentTarget是c
target对应的是d currentTarget是b
target对应的是d currentTarget是a

反之设置addEventListener的第三个参数为true,则为捕获时绑定的顺序

target对应的是d currentTarget是a
target对应的是d currentTarget是b
target对应的是d currentTarget是c

收获

e.target:触发事件的元素
e.currentTarget:绑定事件的元素

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值