Лучший способ сделать это с помощью пузырькового захвата, например:
$(document).click(function() {
//close menu
})
$("#the_menu").click(function(e) {
e.stopPropagation();
});
Как это работает, каждый пузырь кликает (если вы не остановите его, обычно return false;
или event.stopPopagation()
), так что все, что вы нажимаете, пузырится вплоть до DOM ... если клик делает это, мы закрываем меню. Если оно пришло из внутри меню, мы остановим всплывающее окно ... чтобы щелчок не всплывал, вызывая закрытие. Этот подход использует только 2 обработчика событий вместо 1 для всего , но для меню, что очень облегчает:)