javascript - Javascript - 将事件侦听器添加到实时标签,但从事件侦听器中排除内部元素
问题描述
解决方案
event.target
返回树中最深的元素。由于<i>
在内部<a>
,它作为当前目标返回。要解决此问题,您可以使用它Element.closest()
来获取正确的元素。
document.body.addEventListener("click", (event) => {
const aEl = event.target.closest("a");
if (aEl) {
aEl.classList.toggle("active")
}
})
a {
color: brown;
}
.active {
color: mediumseagreen;
}
<link href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" rel="stylesheet"/>
<ul>
<li><a><i class="fa fa-check" aria-hidden="true"></i></a> One</li>
<li><a><i class="fa fa-check" aria-hidden="true"></i></a> Two</li>
</ul>
推荐阅读
- javascript - 故事书 4 和 webpack.config?
- hibernate - 一对一与多对一(单向)
- c# - IAuthorizationFilter 删除 cookie
- model-binding - ASP.NET 模型绑定器不填充模型值
- python - 合并两个 QuerySet 或重新排序一个 QS,以便每个第 n 个元素都来自第二个元素
- ios - 后面的标签栏重叠视图
- centos - 如何在 centOs 服务器上查看单个 html 页面
- php - jQuery Datatables 服务器端处理无结果返回
- angular - 接口的最佳实践
- java - Can I call a .java file from a .html file with href or something else without using javascript in-between