As respostas aqui levaram a pergunta do OP muito literalmente. Como essas respostas podem ser expandidas para um cenário em que há MUITOS elementos filhos, não apenas um<a>
tag? Aqui está uma maneira.
Digamos que você tenha uma galeria de fotos com um fundo escuro e as fotos centralizadas no navegador. Ao clicar no plano de fundo preto (mas não em nada dentro dele), você deseja que a sobreposição seja fechada.
Aqui está um possível 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>
E aqui está como o JavaScript funcionaria:
$('.gallery').click(
function()
{
$(this).hide();
}
);
$('.gallery > .contents').click(
function(e) {
e.stopPropagation();
}
);
Isso interromperá os eventos de clique dos elementos internos .contents
de todas as pesquisas, .gallery
para que a galeria seja fechada apenas quando você clicar na área de fundo preto desbotada, mas não quando você clicar na área de conteúdo. Isso pode ser aplicado a muitos cenários diferentes.
$(".header a")
com$(".header *")
e obteve qualquer criança selecionada (div, formulários, entrada, etc).