Реализую меню на JS.
<button class="nav__toggle" type="button">Открыть</button>
<ul class="nav__list">
<li class="nav__item"><a href="#">Пункт 1</a></li>
<li class="nav__item">
<a href="#">Пункт 2</a>
<ul class="nav__sublist">
<li>Пункт 2.1</li>
<li>Пункт 2.2</li>
</ul>
</li>
<li class="nav__item">
<a href="#">Пункт 3</a>
<ul class="nav__sublist">
<li>Пункт 3.1</li>
<li>Пункт 3.2</li>
</ul>
</li>
<li class="nav__item"><a href="#">Пункт 4</a></li>
</ul>
Открытие меню по кнопке реализовал следующим образом:
var navToggle = document.querySelector(".nav__toggle");
navToggle.addEventListener("click", function(event) {
event.preventDefault();
var navList = document.querySelector(".nav__list");
if (!navList.classList.contains("nav--show")) {
navList.classList.add("nav--show");
} else {
navList.classList.remove("nav--show");
}
});
Действиями выше я отобразил просто пункты меню при клике по кнопке. Но как теперь реализовать открытие подпунктов этого меню?
Решил сделать так: если следующий элемент после тега
<a>
возвращает НЕ undefined, значит в этом пункте есть подпункт
var navItem = document.querySelectorAll(".nav__item > a");
for (var i = 0; i < navItem.length; i++) {
if (navItem[i].nextElementSibling != undefined){
console.log(navItem[i])
};
}
Но как мне теперь отображать эти подпункты при клики на них?
https://codepen.io/anon/pen/vwaaqV