คำตอบที่นี่ก็ตอบคำถามของ OP อย่างแท้จริงเช่นกัน คำตอบเหล่านี้จะขยายออกไปในสถานการณ์ที่มีองค์ประกอบลูกมากมายได้อย่างไรไม่ใช่แค่<a>
แท็กเดียว นี่คือวิธีหนึ่ง
สมมติว่าคุณมีแกลเลอรี่ภาพที่มีพื้นหลังเป็นสีดำและภาพที่อยู่กึ่งกลางในเบราว์เซอร์ เมื่อคุณคลิกพื้นหลังสีดำ (แต่ไม่มีสิ่งใดอยู่ภายใน) คุณต้องการให้การวางซ้อนปิด
นี่คือ HTML ที่เป็นไปได้บางส่วน:
<div class="gallery" style="background: black">
<div class="contents"> <!-- Let's say this div is 50% wide and centered -->
<h1>Awesome Photos</h1>
<img src="img1.jpg"><br>
<img src="img2.jpg"><br>
<img src="img3.jpg"><br>
<img src="img4.jpg"><br>
<img src="img5.jpg">
</div>
</div>
และนี่คือวิธีที่ JavaScript ใช้งานได้:
$('.gallery').click(
function()
{
$(this).hide();
}
);
$('.gallery > .contents').click(
function(e) {
e.stopPropagation();
}
);
วิธีนี้จะหยุดกิจกรรมการคลิกจากองค์ประกอบที่อยู่ใน.contents
การวิจัยทุกครั้ง.gallery
ดังนั้นแกลเลอรีจะปิดเฉพาะเมื่อคุณคลิกในพื้นที่พื้นหลังสีดำจาง ๆ แต่จะไม่หยุดเมื่อคุณคลิกในพื้นที่เนื้อหา สิ่งนี้สามารถนำไปใช้กับสถานการณ์ต่าง ๆ มากมาย
$(".header a")
ด้วย$(".header *")
และเลือกลูก ๆ (div, form, input, etc)