Причина, по которой это может быть затруднено, заключается в пузыре событий.
Вы можете попробовать что-то вроде этого:
$('.context-switch').click(function(e) {
e.stopPropagation();
$(".context-switch-menu").toggle();
});
$(".context-switch-menu").click(function(e){
e.stopPropagation();
});
$("body").click(function(e){
$(".context-switch-menu").hide();
});
e.stopPropagation()
предотвращает пузырьковое событие click
на обработчики body
.Без него любой щелчок по .context-switch
или .context-switch-menu
также вызовет обработчик событий тела, который вам не нужен, так как это сведет на нет эффект клика .context-switch
в половине случаев.(т. е. если состояние скрыто, а затем вы щелкаете, чтобы показать, событие вспыхивает и запускает обработчик body
, который затем снова скрывает .context-switch-menu
.)