Задать вопрос
@Aodhan

Как заставить код работать постоянно?

Есть меню и прописанное для него поведение на клики в разных местах, но если работает только та функция, что скрывает и открывает меню при нажатии на кнопку, то все нормально. Если же запускается функция, которая закрывает меню при клике вне области меню, то перестает работать скрытие по повторному нажатию на кнопку. Где я ошибся?
JS
function hideMenu(menuId) {

var showMenuId = menuId;
if ($(menuId).is(":visible")){
$('.hiddenMenu').hide();
} else{
$(".hiddenMenu:visible").hide();
$(menuId).show('800');

}
$(document).mouseup(function (e) {
var div = $(menuId);
if (!div.is(e.target) && div.has(e.target).length===0){
div.hide();
}
});

console.log(menuId);

}

PS: Теперь повторный клик вообще не обрабатывается.
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@noeer
Вынесите код, который закрывает меню при клике вне области меню, из функции.
Он работает автономно.
В результате должно получиться примерно так
function hideMenu(menuId) {
	if ($(menuId).is(":visible")){
		$('.hiddenMenu').hide();
	} else{
		$(".hiddenMenu:visible").hide();
		$(menuId).show('800');
	}
}

$(document).mouseup(function (e) {
	var div = $('#menuId'); // здесь сразу указываете селектор меню
	if (!div.is(e.target) && div.has(e.target).length===0){
		div.hide();
	}
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы