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!

questionAnswers(2)

yourAnswerToTheQuestion