При клике на кнопку открывается меню. При клике вне меню оно закрывается. При клике на кнопку-гамбургер меню также должно закрываться, если оно открыто. Но у меня получается повторное открытие меню, сразу после закрытия, и оно не закрывается. Как сделать закрытие при клике вне меню, а также при клике на кнопку, если меню открыто?
$(".menu_btn").click(function() {
if (!$("header").hasClass("open_menu")) {
$("header").addClass("open_menu");
}
});
$(document).mouseup(function(e) {
var $target = $(e.target);
if ($target.closest("nav").length === 0) {
$("header").removeClass("open_menu");
}
});
$(".menu_btn").click(function() {
$(".header").toggleClass("open_menu");
});
$(document).mouseup(function(e) {
var $target = $(e.target);
if ($target.closest(".nav").length == 0) {
$(".header").removeClass("open_menu");
}
});
.nav{
width:250px;
}
.header{
display:none;
}
.open_menu{
display:block;
border:2px solid red;
background:#ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='nav'>
<button class='menu_btn'>Click me</button>
<ul class='header'>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
</ul>
</div>
UPD
$(".menu_btn").click(function() {
$(".header").toggleClass("open_menu");
});
$(document).mouseup(function(e) {
var $target = $(e.target);
if ($target.closest(".header").length == 0 && $target.closest(".menu_btn").length == 0) {
$(".header").removeClass("open_menu");
}
});
.header {
display: none;
}
.open_menu {
display: block;
border: 2px solid red;
background: #ccc;
width: 250px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class='menu_btn'>Click me</button>
<ul class='header'>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
<li>1111111111111111111111</li>
</ul>
Используйте toggleClass
$(".menu_btn").click(function() {
if (!$("header").hasClass("open_menu")) {
$("header").toggleClass("open_menu");
}
});
$(document).mouseup(function(e) {
var $target = $(e.target);
if ($target.closest("nav").length === 0) {
$("header").toggleClass("open_menu");
}
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На главной странице (stom-mva ru) одни пункты меню(ссылки) ведут на другие страницы, другие пункты - меняют на div'ы (основной "контент") с помощью этого...
Пытаюсь создать новую категорию. Отправляю ее на сервер для сохранения в базе, и если success,то хочу добавить ее ко всем остальным в panel-group.