#javascript
Вопрос:
У меня есть код, но мне нужна помощь, пожалуйста, как я могу закрыть меню при нажатии на пункт ссылки. вот на чем я застрял
$('.burger').on('click', function() {
$(this).toggleClass('active');
$('.menu__list').slideToggle();
});
let ul = document.querySelector('.menu__list');
let li = document.querySelectorAll('.menu__link');
li.forEach(el => {
el.addEventListener('click', function() {
ul.querySelector('.menu__link--active').classList.
remove('menu__link--active');
el.classList.add('menu__link--active');
});
});
Ответ №1:
Просто добавьте .slideToggle() в прослушиватель щелчков:
$('.burger').on('click', function() {
$(this).toggleClass('active');
$('.menu__list').slideToggle();
});
let ul = document.querySelector('.menu__list');
let li = document.querySelectorAll('.menu__link');
li.forEach(el => {
el.addEventListener('click', function() {
ul.querySelector('.menu__link--active').classList.
remove('menu__link--active');
el.classList.add('menu__link--active');
$('.menu__list').slideToggle();
});
});
Комментарии:
1. Спасибо, это работает, только я добавил чек для активного класса кнопки бургер
Ответ №2:
Я могу придумать 2 решения, во-первых, сделать прозрачный div с высотой и шириной экрана и создать на нем прослушиватель событий щелчка, чтобы закрыть меню, другой вариант-использовать прослушиватель событий фокусировки и размытия
Ответ №3:
Полагая, что у вас есть список элементов в вашем примере, я предлагаю следующее решение.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#flip").click(function(){
$("#panel").slideToggle("slow");
});
$(".closemenu").click(function(){
$("#panel").slideToggle("slow");
});
});
</script>
<style>
#panel, #flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel {
padding: 50px;
display: none;
}
.closemenu{
font-weight:bold;
list-style:none;
}
</style>
</head>
<body>
<div id="flip">Click to slide the panel down or up</div>
<div id="panel">
<ul>
<li class="closemenu">item1</li>
<li class="closemenu">item2</li>
<li class="closemenu">item3</li>
</ul>
</div>
</body>
</html>