javascript - 检测事件气泡中的元素
问题描述
我有这个 html 代码:
<div class="container">
<div class="parent">
<!-- P Element Completely On Parent -->
<p style="width: 100%; height: 100%;">Hello</p>
</div>
........
</div>
这是我的 Javascript:
document.querySelector(".container").addEventListener("click", (e) => {
if ( e.target == document.querySelector(".parent") ) {
alert(" It Worked!!! ")
}
},
true // <--- bubbling
)
- 我不想添加 jQuery 等库...
- 我不想设置 p 元素
style="pointer-events: none"
- 我想使用动态代码(不要使用 e.target.parentElement)
是否可以检测父元素点击而不给它事件(事件冒泡)?
客户端单击 p 元素后,结果代码应该可以工作
解决方案
是的,你可以试试这个
document.querySelector(".container").addEventListener("click", (e) => {
var parentel = e.target.parentElement
if (parentel.className == "parent") {
alert(" It Worked!!! ")
}
})
<div class="container">
<div class="parent">
<!-- P Element Completely On Parent -->
<p class- "child" style="width: 100%; height: 100%;">Hello</p>
</div>
</div>
推荐阅读
- css - 观察所有 sass 文件的变化并将它们保存在一个 css 文件中
- python - Scipy.stats 的 fit 和 pdf 函数
- node.js - Docker 中的 Azure Node.js 应用服务避免无法打开 /dev/tty 日志
- sql-server - SQL Server - 编写查询,在结构不佳的架构中规范化逗号分隔值
- javascript - 灯塔多个 URL
- matlab - 如何根据字段值提取字段
- android - Android双向数据绑定不适用于edittext和observable变量
- android - 半圆形按钮匹配圆形图像android
- kotlin - findAllBy JPA 与 EmbeddedId
- php - Laravel 没有获取 MySQL 登录信息