javascript - “e.target”调用错误的目标?
问题描述
我正在处理的组件依赖于<img>
元素内部的<span>
元素,当<span>
通过 JQuery 检测到“单击”事件时,该跨度的 ID 应记录到控制台。但由于某种原因,<img>
正在记录 的 ID。
$(() => {
$('.star-span').click(e => {
console.log(e.target);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="star-span" id="1">
<img class="star-img" width="15%" src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Five-pointed_star.svg/2000px-Five-pointed_star.svg.png" />
</span>
有人在我的代码中看到任何明显的错误吗?
解决方案
行为符合预期。每个MDNevent.target
是_
对调度事件的对象的引用。
event.currentTarget
它与在事件的冒泡或捕获阶段调用事件处理程序时不同。
点击的最里面的元素是img
,所以img
是target
事件的 。
如果您想引用处理程序所在的元素,请e.currentTarget
改用:
$('.star-span').click(e => {
console.log(e.currentTarget);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="star-span" id="1">
<img class="star-img" width="15%" src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Five-pointed_star.svg/2000px-Five-pointed_star.svg.png" />
</span>
推荐阅读
- firebase - Firebase Send Rest API 导致 MismatchSenderId 错误
- cluster-computing - 使用 Terraform 进行垂直缩放
- scala - “for”在 Scala 中是如何工作的?
- arrays - 科特林。数组数组无法正常工作
- reactjs - 将包添加到已发布应用程序的 node_modules 文件夹?
- java - Android:检查 MediaRecorder 中使用的 HW Encoder 或 SW Encoder
- unreal-engine4 - 在虚幻中平滑增加角色的速度
- node.js - NodeJS获取表单没有返回任何东西
- ruby-on-rails - 编辑嵌套的属性/模型导轨
- python - python中的记忆硬币变化(递归解决方案)