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以下的版本中兼容性较差。

event.target与event.currentTarget的差异相关推荐

  1. event.target与event.currentTarget的区别

    event.target事件和event.currentTarget事件,经常被人们混淆.因为它们两个有时候的返回值是完全一样的,因此很具有迷惑性.然而如果真的是一样的,那当初官方就不会做这样没有意义 ...

  2. event.target【转载】

    [转载] 1.this和event.target的区别: js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素: 2.this和ev ...

  3. [vue] 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别?

    [vue] 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别? event.currentTarget指向事件所绑定的元素,而event.target始终 ...

  4. JS event.currentTarget( ) 和 event.target( ) 的区别

    这两个方法都是监听事件触发的目标.区别是,event.currentTarget( ) 会返回当前触发事件的元素:而event.target( ) 会返回触发事件触发的源头元素. 用法:可以用来监听触 ...

  5. JavaScript中的Event.target

    event.target 一般情况下我们获取目标事件源都是谁是调用者谁就是事件源,但是当有批量的DOM需要操作的时候,要判断哪一个dom是事件源就不是很明确了,使用e.target可以准确地获取事件源 ...

  6. JS中event.target事件委派遇到多重子节点的元素导致子节点遮挡父节点事件的解决方法

    1.问题描述 事件委派在重复给多个子节点添加相同方法时或者即时添加子节点时很优秀,但如果子节点中还含有自己的子节点,就会发生遮挡. 2.问题分析 event.target会找到使绑定节点执行该事件的触 ...

  7. js中event,event.srcElement,event.target在IE和firefox下的兼容性

    1.window.event对象 IE:有window.event对象 firefox:没有window.event对象.可以通过函数的参数传递event对象.例 如:οnmοusedοwn=func ...

  8. 事件源event.target

    今天在了解检测浏览器是否能播放不同类型的视频时发现以下代码 <script> function supportType(e,vidType,codType){ myVid=document ...

  9. 由event target引发的关于事件流的一连串思考(二)

    阻止事件冒泡 W3C的方法是ev.stopPropagation(),IE则是使用ev.cancelBubble = true. 先不谈IE的私有方法,首先讨论一个问题:ev.stopPropagat ...

最新文章

  1. 原来这部电影 18 禁?用神经网络“看”剧本,AI 秒给预测评级
  2. 3dmax导出fbx时如何带贴图_houdini | 第一章 第三节 贴图与顶点动画
  3. 【Java 虚拟机原理】Class 字节码二进制文件分析 三 ( 访问和修饰标志 | 类索引 | 父类索引 | 接口计数器 | 接口表 | 字段计数器 | 字段表 )
  4. domino导出数据至Excel
  5. 终极利器|一篇文章讲清楚Python虚拟环境
  6. Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc
  7. JavaScript0-闭包
  8. 【算法分析与设计】找到最重的球
  9. 当前以太坊上DeFi协议总锁仓量为374.7亿美元
  10. 转贴:Icon Design Guidelines, Android 2.0
  11. 用python实现websocket请求遇到的问题及解决方法。
  12. C# 连接sql 2005
  13. 系统、驱动相关软件下载
  14. xsmax进入dfu模式_苹果xsmax怎么进入dfu
  15. 约瑟夫 java_约瑟夫问题 java 实现详解
  16. jsp未正确拼写字 mysql_江西26个英文字母的正确拼写方式
  17. google手机连接WIFI后总会提示“无法连接互联网“的解决方法
  18. php寻仙记,wap寻仙记
  19. ubunu kylin 17.10低部面板任务栏图标消失
  20. 【学习笔记16】JavaScript函数封装习题

热门文章

  1. GIS——各大地图厂商为什么偏爱web墨卡托投影
  2. 云之梦php百度网盘,云知梦2017最新PHP工程师全套视频教程 laravel框架版
  3. rebar3使用本地依赖
  4. 为什么是 import cv2呢
  5. 【计算机考研择校】江苏大学
  6. 中央机关及其直属机构2007年考试录用公务员公共科目-行政职业能力测试
  7. 浏览器的页面日志采集
  8. 虚拟同步发电机离网并网无缝切换MATLAB仿真模型#VSG
  9. [DataAnalysis]数据分析基础-茆诗松数理统计
  10. git 把本地一个分支推到另一个git仓库