Las respuestas aquí tomaron la pregunta del OP demasiado literalmente. ¿Cómo se pueden expandir estas respuestas en un escenario donde hay MUCHOS elementos secundarios, no solo una <a>
etiqueta? Aquí hay una manera.
Supongamos que tiene una galería de fotos con un fondo oscurecido y las fotos centradas en el navegador. Cuando hace clic en el fondo negro (pero no hay nada dentro), desea que se cierre la superposición.
Aquí hay algunos posibles 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>
Y así es como funcionaría el JavaScript:
$('.gallery').click(
function()
{
$(this).hide();
}
);
$('.gallery > .contents').click(
function(e) {
e.stopPropagation();
}
);
Esto detendrá los eventos de clic de elementos dentro .contents
de cada investigación, .gallery
por lo que la galería se cerrará solo cuando haga clic en el área de fondo negro desvanecido, pero no cuando haga clic en el área de contenido. Esto se puede aplicar a muchos escenarios diferentes.
$(".header a")
con$(".header *")
y tengo que hayan sido designados niño (div, formas, de entrada, etc.).