Gostaria de saber se esta é a maneira correta de ocultar elementos visíveis quando clicados em qualquer lugar da página.
$(document).click(function (event) {
$('#myDIV:visible').hide();
});
O elemento (div, span, etc.) não deve desaparecer quando um evento de clique ocorre dentro dos limites do elemento.
jquery
events
event-bubbling
Franek
fonte
fonte
.myDiv
elemento. Por exemplo, se você tiver uma lista suspensa selecionada dentro.myDiv
. Quando você clica no botão de seleção, ele pensa que está clicando fora da caixa.Tente isto
Eu uso o nome da classe em vez do ID , porque no asp.net você precisa se preocupar com as coisas extras que o .net atribui ao id
EDIT- Como você adicionou uma outra peça, funcionaria assim:
fonte
A partir do jQuery 1.7, há uma nova maneira de lidar com eventos. Pensei em responder aqui apenas para demonstrar como posso fazer isso da maneira "nova". Caso contrário, recomendo que você leia os documentos do jQuery para o método "on" .
Aqui, estamos abusando dos seletores do jQuery e da agitação de eventos. Observe que eu limpo o manipulador de eventos posteriormente. Você pode automatizar esse comportamento com
$('.container').one
( consulte: docs ), mas porque precisamos fazer condicionais dentro do manipulador que não se aplica aqui.fonte
Este exemplo de código a seguir parece funcionar melhor para mim. Embora você possa usar 'return false', que interrompe toda a manipulação desse evento para a div ou qualquer um de seus filhos. Se você deseja ter controles na div pop-up (um formulário de login pop-up, por exemplo), use event.stopPropogation ().
fonte
Obrigado, Thomas. Eu sou novo no JS e tenho procurado loucamente por uma solução para o meu problema. O seu ajudou.
Eu usei o jquery para criar uma caixa de login que desliza para baixo. Para uma melhor experiência do usuário, eu desejei fazer a caixa desaparecer quando o usuário clica em algum lugar, exceto na caixa. Estou um pouco envergonhado por usar cerca de quatro horas consertando isso. Mas ei, eu sou novo no JS.
Talvez meu código possa ajudar alguém:
fonte
O que você também pode fazer é:
Se o seu destino não for um div, oculte-o, verificando se o seu comprimento é igual a zero.
fonte
Eu fiz o abaixo. Pensou em compartilhar para que outra pessoa também pudesse se beneficiar.
Deixe-me saber se eu posso ajudar alguém sobre isso.
fonte
div#newButtonDiv
não for clicado. Eu recomendaria que você remova o segundo.click()
na linha 4 (se fizer isso, lembre-se de remover as chaves de fechamento, parênteses e ponto e vírgula - linha 9).Tente o seguinte:
fonte
Outra maneira de ocultar a div do contêiner quando um clique ocorre em um elemento não filho;
fonte
Aqui #suggest_input in é o nome da caixa de texto e .suggest_container é o nome da classe ul e .suggest_div é o principal elemento div da minha sugestão automática.
esse código é para ocultar os elementos div clicando em qualquer lugar na tela. Antes de fazer tudo, entenda o código e copie-o ...
fonte
Tente isso, está funcionando perfeitamente para mim.
fonte
mas você também precisa ter em mente essas coisas. http://css-tricks.com/dangers-stopping-event-propagation/
fonte
Aqui está uma solução CSS / JS pequena, baseada na resposta de Sandeep Pal:
Experimente clicando na caixa de seleção e depois fora do menu:
https://jsfiddle.net/qo90txr8/
fonte
Isso não funciona - oculta o .myDIV quando você clica dentro dele.
fonte
Apenas duas pequenas melhorias nas sugestões acima:
interrompa a propagação no evento que desencadeou isso, assumindo que é um clique
fonte
fonte
fonte
fonte
Solução simples: oculte um elemento em um evento de clique em qualquer lugar fora de algum elemento específico.
fonte