[英]Inner div prevents event triggering in parent div
考慮以下HTML代碼:
<section id="container">
<div class="box"><div>inner div</div></div>
<div class="box"></div>
<div class="box"></div>
</section>
和JS代碼:
var section = document.getElementById("container");
section.addEventListener("click", function(event) {
if (event.target.className === "box") {
...
}
});
如果單擊文本inner div
,則不會觸發該事件。 為什么? 我該如何改變?
如果單擊文本內部div,則不會觸發該事件。 為什么?
該事件設置為<div class="box">
元素,並且<div>inner div</div>
位於其頂部。 當您單擊它時,事件只能觸發到最頂部的元素,而不能觸發其下面的元素。
要使其工作,請設置pointer-events: none;
在內部div上:
<div style="pointer-events:none;">inner div</div>
至於為什么它沒有被觸發; 觸發了一個事件,但是event.target.className不是“ box”,因為event.target不是外部div,而是圍繞文本的內部div。
您的代碼很好。 發生問題是因為您單擊的是不帶box
類的div(它位於div.box
的div)。 您可以通過單擊“內部div 2”文本來看到它:
var section = document.getElementById("container"); section.addEventListener("click", function(event) { if (event.target.className == "box") { alert('box clicked'); } });
<section id="container"> <div class="box"><div>inner div 1</div></div> <div class="box">inner div 2</div> <div class="box"></div> </section>
內部div文本不包含類“ box”,請嘗試以下代碼:
<html>
<head>
</head>
<body>
<section id="container">
<div class="box"><div class="box">inner div</div></div>
<div class="box"></div>
<div class="box"></div>
</section>
<script>
var section = document.getElementById("container");
section.addEventListener("click", function(event) {
if (event.target.className === "box") {
alert("Worrking...");
}
});
</script>
</body>
</html>
當單擊內部div時發生事件,因為具有類“ box”
或使用此代碼:
<html>
<head>
</head>
<body>
<section id="container">
<div class="box"><div>inner div</div></div>
<div class="box"></div>
<div class="box"></div>
</section>
<script>
var section = document.getElementById("container");
section.addEventListener("click", function(event) {
if (event.target.className === "box" || event.target.parentElement.className === "box") {
alert("Worrking...");
}
});
</script>
</body>
</html>
我認為此解決方案比其他建議的解決方案更通用:
if (event.target.className === "box" || event.target.parentNode.className === "box")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.