javascript - js中e.target跟this不相等吗?
怪我咯
怪我咯 2017-04-11 10:21:59
[JavaScript讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
迷茫

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 这样才能得出正确的结果

黄舟

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

伊谢尔伦

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

<p><img src="..."></p>

<script>
$('p').click(function() {
e.target 表示事件触发元素这里会是img
this 始终指向绑定事件的元素也就是p
});
</script>
迷茫

楼上的都说了很多,我说还有一种可能是你把this的指向给搞混了。比如你的回调中用了箭头函数或者bind之类的方法生成的回调。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号