event.target与event.currentTarget的差异

event.target与event.currentTarget的差异(完整版)

1.什么是target?什么是currentTarget?

event.target 是发生事件的元素或触发事件的元素。
event.currentTarget 是我们在其上显式附加事件处理程序的元素。(是事件绑定的元素)

2.target和currentTarget的区别:

  1. target:触发事件的元素。

  2. currentTarget:事件绑定的元素。

  3. 两者在没有冒泡的情况下,是一样的值,但在用了事件委托的情况下event.target指向引起触发事
    件的元素,而event.currentTarget则是事件绑定的元素。

  4. 小结:currentTarget始终是监听事件者,绑定谁就是谁,而target是事件的真正发出者,点谁就是
    谁。

一、针对部分监听事件,例如onclick:

1、如果你点击的是添加事件元素的子元素,就用currentTarget来获取父元素的值,用target来获取
子元素的值;
2、如果没有子元素,就在本元素上添加事件,target和currentTarget效果一样。

二、针对部分监听事件,例如onmouseenter:

1、如果你点击的是添加事件元素的子元素。使用currentTarget或者target都是获取父元素的值;
2、如果没有子元素,就在本元素上添加事件,target和currentTarget效果都是获取到自身元素的
值。

三、针对部分监听事件(比如onclick):

target指向的是事件触发事的元素。
target在事件流的目标阶段,没有事件流的捕获和冒泡。点击始终是指向被单击的对象

currentTarget指向事件绑定的元素。
当事件流处在目标阶段的时候(就是点击当前事件绑定对象),指向被单击的对象
当处于捕获和冒泡阶段的时候,指向当前事件活动的对象(一般为父级)。

什么时候使用target和currentTarget?

1.target在事件流的目标阶段
当事件流处在目标阶段的时候(就是点击当前事件绑定对象),指向被单击的对象
当需要获取不同子组件绑定的属性,比如点击某个组件拿到该组件上绑定的属性,可以使用
event.target
2 . currentTarget在事件流的捕获,目标及冒泡阶段。
当事件流处在目标阶段的时候(就是点击当前事件绑定对象),指向被单击的对象
当处于捕获和冒泡阶段的时候,也是指向当前事件绑定的对象。
始终都可以找到当前绑定事件的对象,所以开发人员一般使用event.currentTarget属性,event.target
属性很少使用
一般情况下,建议只使用 currentTarget 对象,因为它能拿到我们想要的参数属性
如果我们需要获取不同子组件绑定的属性,比如点击某个组件拿到该组件上绑定的属性,才用 target 对 象
4.current的不足:
通过查询MDN了解到,currentTarget在Safari on iOS10.0以下的版本中兼容性较差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值