我正在做一个小应用来学习ES6,但是我在使用addEventListener
和父/子事件时遇到了问题。
我有一个菜单,由几个带有图像(头像)和一些文本的
组成。每个
都有一个data-id属性,以获取所点击元素的id,并在每一行上放置了
addEventListener
:<div class="row" data-id="1">
<img src="avatar" />
Lorem ipsum
</div>
...
并且js:
const rows = document.querySelectorAll('.row');
rows.forEach(row => row.addEventListener('click',selectRow));
function selectRow(e){
var row = e.target;
alert(row.dataset.id);
}
当我点击头像时出现问题,它会触发点击事件,但目标是图片元素而不是div,所以我无法获取data-id属性。
我已经尝试了很多方法(例如这个),但它会阻止在头像上点击时触发事件,因此并不是解决方案,因为头像是行的一部分,可能会被点击:S
我设置了一个jsfiddle来展示我的问题。任何帮助都将不胜感激:)
[<>]
按钮),而不是 jsFiddle,这样所有的代码、标记等都包含在问题中。虽然您的问题已经有足够的代码了,但如果您已经创建了可运行的示例,最好将其包含在内。 - T.J. Crowder