gpt4 book ai didi

javascript - Vanilla JS : Capture wrapping element click, 但不是它的 child

转载 作者:行者123 更新时间:2023-11-29 18:39:38 25 4
gpt4 key购买 nike

我有一个包含另一个 div (B) 的 div (A)。

当我点击 A 时,我希望 e.target 为 A。当我点击 B 时,我也希望 e.target 为 A。

既然必须点击包裹元素才能获取到内层元素,那么如何告诉JS永远获取不到B呢?

我知道它与冒泡有关,但我已尽我所能,但似乎无济于事。

// none of these work
e.preventDefault()
e.stopPropagation()
e.stopImmediatePropagation()
e.cancelBubble = true

// adding { capture: false } doesn't help either

这是问题的 JSBin 简化测试用例。 https://jsbin.com/wezoyoyito/1/edit?html,css,js,console,output

最佳答案

改用 event.currentTarget,它总是引用监听器所附加的元素(而不是内部被点击的元素):

document.querySelectorAll('.a').forEach(el => {
el.addEventListener('click', e => {
console.log(e.currentTarget.className)
})
})
.a {
background: red;
width: 100px;
height: 100px;
}

.b {
background: yellow;
width: 80px;
height: 80px;
}
<div class="a">
A
<div class="b">B</div>
</div>

关于javascript - Vanilla JS : Capture wrapping element click, 但不是它的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58142463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com