相关文章推荐
从未表白的骆驼  ·  js处理日期时区问题开发者社区·  3 月前    · 
粗眉毛的松鼠  ·  在JSP中的java代码中调用js代码 - ...·  1 周前    · 
细心的打火机  ·  允许Cmake中的相互依赖-腾讯云开发者社区 ...·  1 年前    · 
狂野的水煮鱼  ·  如何在Vue.js中制作反应式窗口参数win ...·  3 年前    · 
呐喊的柿子  ·  RuntimeError:梯度计算所需的变量 ...·  3 年前    · 
火星上的西瓜  ·  安卓android java与vue ...·  3 年前    · 
Code  ›  javascript - js中e.target跟this不相等吗? -
target javascript js js代码
https://segmentfault.com/q/1010000007780327
性感的香槟
2 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. javascript
  4. 问答详情

js中e.target跟this不相等吗?

头像
lilisong0523
279 6 21 39
发布于
2016-12-13

刚写一个点击事件用$(this)不行,换成$(e.target)就可以了,所以这两个不一样吗?有什么区别呢?

javascript jquery
阅读 10.4k
5 个回答
得票 最新
头像
aa杨
1.7k 1 6 16
发布于
2016-12-13
更新于
2016-12-13
✓ 已被采纳

1.event.target与this的区别
event.target表示发生点击事件的元素;
this表示的是注册点击事件的元素
this 等于 e.currentTarget
this是所有函数原生具有的.进入函数时,this已经直接有了目标对象.
而e.target通过e再寻找target,中转了一下。所以相比较而言,this的执行效率更高些。
2 $(this.target)与$(this)比较的问题
有人会问为什么$(this.target)!=$(this)?
因为你用了jq来构造两个对象, 所以你最后一步比较的时候, 哪怕是两个对象的内容一模一样, 结果也是不想等的, 对象的比较比较的是指针, 两个指针
不一样所以是不想等的, 简单的说就是
var a = new Object();
var b = new Object();// 这两个对象看起来是一模一样的吧, 但是比较结果依然不想等
你直接比较 this == e.target 这样才能得出正确的结果

头像
empty_back
557 5 33 63
发布于
2016-12-13
更新于
2016-12-13

额,代码呢。target需要通过形参event才能拿到对象,this则通过类名或者id就能拿到当前触发函数对象

头像
brook
3.1k 3 5 21
发布于
2016-12-13

元素嵌套时就不相等了
比如下面结构

<div><img src="..."></div>
<script>
 
推荐文章
从未表白的骆驼  ·  js处理日期时区问题开发者社区
3 月前
粗眉毛的松鼠  ·  在JSP中的java代码中调用js代码 - Wcy100
1 周前
细心的打火机  ·  允许Cmake中的相互依赖-腾讯云开发者社区-腾讯云
1 年前
狂野的水煮鱼  ·  如何在Vue.js中制作反应式窗口参数window.innerWidth 没有反应_javascript_EUV-DevPress官方社区
3 年前
呐喊的柿子  ·  RuntimeError:梯度计算所需的变量之一已被就地操作修改?_python_Mangs-DevPress官方社区
3 年前
火星上的西瓜  ·  安卓android java与vue js互相调用 - 掘金
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号