唯品秀前端博客
当前位置: 前端开发 > Vue.js专区 > 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别

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

2019-07-04 分类:Vue.js专区 作者:管理员 阅读(1469)

这个问题我觉得还是比较重要的,因为我们只要做过vue项目,基本会遇到这个问题。然而很多人是随便用,感觉都差不多,其实他们是有本质区别的,一旦没用好,随之扑面而来的就是bug

用概念区分

event.currentTarget始终指向事件所绑定的元素,而event.target指向事件发生时的元素。

示例说明

1
2
3
4
5
<a href="javascript:;" @click="openPlays($event)" class="openplays-btn">
      记住,我通过换行符隔开,方便测试
      <br>
      <i class="iconfont"></i>
</a>

点击a时触发openPlays,传入当前对象

1
2
3
openPlays (e) {
      console.log(e.target,e.currentTarget)
}

当点击“i”区域之外时:

  • 当点击a中的“i”时:
  • 小结

    从上面的结果可以看出,不管你点击的是a本身或者a里面任何子集,currentTarget其获取到的对象都为绑定事件的a;当使用target时,如果你点击到a元素则传a元素,如果点击到a之中的某个子级元素则传a之中的某个元素。一句话,target会变,点到谁身上返回谁,currentTarget不会变,返回事件源对象。另外要强调一个问题,在我们直接打印例如:console.log(e)时候,你会发现控制台打印出来的currentTarget是null,有些同学可能一时就慌神了,具体原因我也没找到确切答案,但你打印e.currentTarget你会发现,这个值是肯定会存在的。

    「两年博客,如果觉得我的文章对您有用,请帮助本站成长」

    赞(5) 打赏

    谢谢你请我吃鸡腿*^_^*

    支付宝
    微信
    5

    谢谢你请我吃鸡腿*^_^*

    支付宝
    微信
    标签:

    上一篇:

    下一篇:

    你可能感兴趣

    共有 0 条评论 - 在vue事件中传入$event,使用e.target和e.currentTarget有什么区别

    博客简介

    唯品秀博客: weipxiu.com,一个关注Web前端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,愿景:成为宇宙中最具有代表性的前端博客,期待您的参与,主题源码 

    精彩评论

    友情链接

    他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

    站点统计

    • 文章总数: 243 篇
    • 草稿数目: 0 篇
    • 分类数目: 15 个
    • 独立页面: 6 个
    • 评论总数: 904 条
    • 链接总数: 14 个
    • 标签总数: 433 个
    • 建站时间: 1070 天
    • 注册用户: 3844 人
    • 访问总量: 8704639 次
    • 最近更新: 2019年11月14日
    服务热线:
     173xxxx7240

     QQ在线交流

     旺旺在线