javascript - 返回子元素的链接事件监听器

标签 javascript

我可能遗漏了一些明显的东西。我最近转而使用 Vanila JS 形式的 Jquery,但我无法破解的一件事是..

当我将事件监听器添加到包含子元素的链接时,事件返回子元素而不是链接元素本身。

我已经尝试了很多不同的解决方案,并且可以阻止在子元素上添加指针事件:无,但是我需要不同的解决方案。

您的帮助将不胜感激

<a href="#" id="click-me" id="2">
<span class="child-span"></span>
</a>

let test  = document.getElementById('click-me')

test.addEventListener('click',function(el){
el.preventDefault()
console.log(el.target)
})

这会返回 span 元素,但我正在尝试返回 #click-me id

最佳答案

点击事件的事件监听器不传递元素作为参数。它传递一个事件对象作为其参数。该事件对象内部是在 target 属性下触发事件的元素。如果您想要事件绑定(bind)到的元素,可以使用 currentTarget 属性。

let testElement = document.getElementById('click-me')
testElement.addEventListener('click', function(event){
  event.preventDefault();
  console.log('Someone clicked the element!');
  console.log(event.target);
  console.log(event.currentTarget);
});
#click-me {
  background-color: #cff;
}

#click-me .child-span {
  background-color: #f99;
}
<a href="#" id="click-me" id="2">
  <span class="child-span">CLICK ME!</span>
  <span class="child-span">No, please click me!</span>
  ... or maybe me?
</a>

关于javascript - 返回子元素的链接事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56304402/

相关文章:

javascript - dc.js x 轴勾选意外行为

JavaScript 测试日期(字符串格式)是否超过 30 天前

javascript - 打开一个新的浏览器窗口/iframe 并在 TEXTAREA 中从 HTML 创建新文档?

javascript - 使用localStorage存储数值

javascript - Angularjs ng-model 未定义

javascript - 您可能返回了未定义的数组或其他一些无效的对象渲染状态数据

javascript - 获取 JavaScript 正则表达式中每个捕获的索引

javascript - 如何在元素位置变化时设置 $watch?

javascript - 查看服务 worker 内部的请求是否成功

javascript - 代理在 Vue 3 的控制台中是什么意思?