首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击表单元格目标子元素

单击表单元格目标子元素
EN

Stack Overflow用户
提问于 2018-09-27 15:14:39
回答 1查看 75关注 0票数 1

我有一个简单的HTML表,其中包含一些单元格中的I:

代码语言:javascript
复制
<td id="x-11"><b>Is it a cell?</b> What a cell!</td>

现在,我想将ID传递给单击触发的JavaScript函数:

代码语言:javascript
复制
const $tds = document.querySelectorAll('td[id]')
    for (let i = 0; i < $tds.length; i++)
        $tds[i].addEventListener('click', ev => console.log(ev.target.id))

如果我单击单元格内的空区域或正常文本,它将按预期的方式工作。但是,如果我点击<b>元素中的文本,会发生一些奇怪的事情:浏览器说<b>元素就是ev.target --尽管它没有任何侦听器。

有人能解释这种行为或提供解决方案吗?

更新:如注释中所述,Difference between e.target and e.currentTarget提供了答案(对于ActionScript,但在这里没有区别),但问题是不同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 15:21:22

您需要使用始终引用侦听器附加到的DOM元素的thisev.currentTarget,相反,ev.target将引用触发事件的元素,在本例中是单击的DOM元素:

代码语言:javascript
复制
$tds[i].addEventListener('click', function(){
   console.log(this.id)
});
//Or
$tds[i].addEventListener('click', ev => console.log(ev.currentTarget.id))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52540200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档