¿Detectar clic fuera del elemento?

Similar aesta pregunta, pero dándole un paso más. Me gustaría detectar clics fuera de un conjunto de elementos, que estoy manejando de la siguiente manera:

$('#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();
    });
});

Esto funciona como un encanto, desafortunadamente, cuando se abre otro elemento del menú y se hace clic en un segundo, se requieren dos clics para abrir el segundo elemento. El primer clic oculta el primer elemento del menú que estaba abierto, el segundo muestra el segundo elemento del menú.

El comportamiento "correcto" funciona de la siguiente manera:

Al hacer clic en un elemento del menú se abre.Al hacer clic en el mismo elemento del menú (o sus hijos) se cierra.Al hacer clic en otro elemento del menú se cierra el primero, se abre el segundo.Al hacer clic fuera de los elementos del menú (abrir), se cierran.

He intentado lo siguiente en lugar de lo anterior$('body').one() Para ignorar los clics en los elementos del menú con poco éxito:

// 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 siempre, gracias por cualquier ayuda!

Respuestas a la pregunta(2)

Su respuesta a la pregunta