volkovecgenei
@volkovecgenei
...

Как сделать закрытие блока, при клике в не этого блока?

У сайта есть меню
<button class="menu-button">
<img src="img/menu.png" alt="Menu">
<div class="button-scale"></div>
</button>
<button class="menu-close hidden">
&#10006;
<div class="button-scale"></div>
</button>
<div class="menu" id="menu-target">
 <!-- Код внутри меню -->
</div>


Это меню по типу бургера, вспылвающее при клике на кнопку

$('.menu-button').click(function() {
	$('.menu').toggleClass('menu_active');
	$('.menu-button').toggleClass('hidden');
	$('.menu-close').toggleClass('hidden');
});
$('.menu-close').click(function() {
	$('.menu').toggleClass('menu_active');
	$('.menu-button').toggleClass('hidden');
	$('.menu-close').toggleClass('hidden');
});


Как сделать, чтобы при нажатии вне меню оно сворачивалось обратно, так как оно занимает не всю ширину дисплея?
  • Вопрос задан
  • 454 просмотра
Решения вопроса 1
var is_menu_open = false;

$('.menu-button').click(function () {
  is_menu_open = true;
  $('.menu').toggleClass('menu_active');
  $('.menu-button').toggleClass('hidden');
  $('.menu-close').toggleClass('hidden');
});

$('.menu-close').click(function () {
  is_menu_open = false;
  $('.menu').toggleClass('menu_active');
  $('.menu-button').toggleClass('hidden');
  $('.menu-close').toggleClass('hidden');
});

$(document).mouseup(function (e) {
  if (is_menu_open) {
    var menu = $("#menu-target");
    if (!menu.is(e.target) && menu.has(e.target).length === 0) {
      $('.menu-close').click();
      is_menu_open = false;
    }
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы