Помощь в делегировании
Имеется верстка:
<div class=" p-b-30 m-b-20">
<ul class="collection-flatten no-list-style text-center">
<li class="p-t-10 mobile-menu-sport">
<span class="btn-plus-mobile"></span>
<div class="wrapper-submenu hide">
</div>
</li>
<li class="p-t-10">
<span class="btn-plus-mobile"></span>
<div class="wrapper-submenu hide">
</div>
</li>
</ul>
</div>
стили:
.wrapper-submenu {
display: flex;
flex-direction: column;
}
.btn-plus-mobile {
&::before {
content: "\ff0b";
padding: 10px 16px 10px 20px;
position: relative;
display: inline-block;
font-size: 20px;
margin-left: -22px;
width: 22px;
cursor: pointer;
}
}
.mobile-menu-links {
padding: 10px 20px;
font-size: 20px;
}
Нужно, чтобы по клику "btn-plus-mobile", открывался блок "wrapper-submenu".
$('.btn-plus-mobile').click(function() {
$('.wrapper-submenu').toggleClass('hide');
});
^ Данное решение открывает блоки вместе, не важно по какому "плюсу" был клик.
const mobileMenuCus = document.querySelector('.mobile-menu-custom');
mobileMenuCus.addEventListener('click', (e) => {
const btnPlus = e.target.closest('li');
const btnShow = btnPlus.querySelector('.btn-plus-mobile');
if(!btnPlus) return;
});
^ Отлавливает отдельные плюсы, но дальше не пойму как выводить отдельные блоки. Буду премного благодарен за помощь. :]
Ответы (1 шт):
Автор решения: Lukas
→ Ссылка
Если элементы не меняют свое положение в доме, то можно сделать так:
$('.btn-plus-mobile').on('click',function(){
$(this).next().toggleClass('hide');
})
.wrapper-submenu {
display: flex;
flex-direction: column;
}
.btn-plus-mobile::before {
content: "\ff0b";
padding: 10px 16px 10px 20px;
position: relative;
display: inline-block;
font-size: 20px;
margin-left: -22px;
width: 22px;
cursor: pointer;
}
.mobile-menu-links {
padding: 10px 20px;
font-size: 20px;
}
.hide {
display:none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class=" p-b-30 m-b-20">
<ul class="collection-flatten no-list-style text-center">
<li class="p-t-10 mobile-menu-sport">
<span class="btn-plus-mobile"></span>
<div class="wrapper-submenu hide">Текст 1</div>
</li>
<li class="p-t-10">
<span class="btn-plus-mobile"></span>
<div class="wrapper-submenu hide">Текст 2</div>
</li>
</ul>
</div>