Detectar clique fora do elemento?
Igual aessa questão, mas dando um passo adiante. Gostaria de detectar cliques fora de um conjunto de itens, que estou manipulando da seguinte maneira:
$('#menu div').live('click', function() {
// Close other open menu items, if any.
// Toggle the clicked menu item.
$('body').one('click', function(event) {
// Hide the menu item.
event.stopPropagation();
});
});
Isso funciona como um encanto, infelizmente, quando outro item de menu é aberto e um segundo é clicado, ele requer dois cliques para abrir o segundo item. O primeiro clique oculta o primeiro item de menu que estava aberto, o segundo mostra o segundo item de menu.
O comportamento "correto" funciona da seguinte maneira:
Clicar em um item de menu o abre.Clicar no mesmo item de menu (ou é filho) o fecha.Clicando em outro item de menu fecha o primeiro, abre o segundo.Clicar fora dos itens de menu (abertos) os fecha.Eu tentei o seguinte no lugar do acima$('body').one()
Para ignorar cliques nos itens de menu com pouco sucesso:
// Captures click on menu items in spite of the not.
$('*').not('#menu *').one('click', function() { // Hide menu }
$('*:not(#menu)').one('click', function() { // Hide menu }
Como sempre, obrigado por qualquer ajuda!