Các câu trả lời ở đây lấy câu hỏi của OP quá đúng theo nghĩa đen. Làm thế nào những câu trả lời này có thể được mở rộng thành một kịch bản có NHIỀU phần tử con, không chỉ là một <a>
thẻ? Đây là một cách.
Giả sử bạn có một bộ sưu tập ảnh với nền bị bôi đen và các ảnh ở giữa trình duyệt. Khi bạn nhấp vào nền đen (nhưng không phải bất cứ thứ gì bên trong nó), bạn muốn lớp phủ đóng lại.
Đây là một số HTML có thể:
<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>
Và đây là cách JavaScript hoạt động:
$('.gallery').click(
function()
{
$(this).hide();
}
);
$('.gallery > .contents').click(
function(e) {
e.stopPropagation();
}
);
Điều này sẽ dừng các sự kiện nhấp chuột từ các yếu tố bên trong .contents
từ mọi nghiên cứu .gallery
để thư viện sẽ chỉ đóng khi bạn nhấp vào khu vực nền đen mờ, nhưng không phải khi bạn nhấp vào khu vực nội dung. Điều này có thể được áp dụng cho nhiều kịch bản khác nhau.
$(".header a")
với$(".header *")
và có bất kỳ đứa trẻ được lựa chọn (div, biểu mẫu, đầu vào, vv).