Аккордеон не получается
Я не знаю, что делать.
Для начала мне надо кликнуть на пункт, найти его контейнер и в этом контейнере найти submenu и вывести его содержимое в консоль. 2 шага я сделал, а как найти submenu, я вообще не понимаю http://plnkr.co/edit/tfZdrlFUGhSdFKzRfTNG?p=preview |
Цитата:
|
найти контейнер у class="item" и в этом контейнере найти submenu
|
Вот так получилось
Теперь надо научится, что бы они автоматически закрывались. Можете мне подсказать в какую сторону думать? Только не делайте готовое решение. http://plnkr.co/edit/NYDHCCCaAPz39WAleF1J?p=preview |
Цитата:
|
если открыть пункт, то он открывается, а если открыть другой пункт, то предыдущий сам закрывался.
|
DivMan,
250 открывашек на форуме обязательно нужна своя? сохранить открытый элемент в переменную -- в клике проверить если в переменной что-то и это что-то != новому то переменная classList.add(none) |
не получается http://plnkr.co/edit/D6k0EPdRkGPlEYyFROO0?p=preview
|
Открывашка 259
DivMan,
<!DOCTYPE HTML> <html> <head> <style> .none{display: none;} </style> <meta charset="utf-8"> </head> <body> <ul class="mainMenu"> <li class="item"> <div class="item_title" >Основы языка и как на нём говорить правильно</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title" >Функции</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title" >Обработка ошибок и отладка</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title">Объекты и массивы</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title">События</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> </ul> <script> window.addEventListener("DOMContentLoaded", function() { var items = document.querySelectorAll(".item"), temp; [].forEach.call(items, function(item) { var submenu = item.querySelector(".submenu"); var itemTitle = item.querySelector(".item_title"); itemTitle.addEventListener("click", function(e) { temp && temp != submenu && temp.classList.add("none"); submenu.classList.toggle("none"); temp = submenu }) }) }); </script> </body> </html> |
сложно
|
Цитата:
var items = document.querySelectorAll(".item"), чтоб было отличие в строке 65 |
Почему автоматическое закрытие происходит только 1 раз?
http://plnkr.co/edit/b5LbiFyk3QtwFBvf03zm?p=preview |
DivMan,
:-? <!DOCTYPE HTML> <html> <head> <style> .none{display: none;} </style> <meta charset="utf-8"> </head> <body> <ul class="mainMenu"> <li class="item"> <div class="item_title" >Основы языка и как на нём говорить правильно</div> <ul class="submenu"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title" >Функции</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title" >Обработка ошибок и отладка</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title">Объекты и массивы</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title">События</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> </ul> <script> var mainMenu = document.querySelector(".mainMenu"), itemChild = mainMenu.querySelectorAll(".submenu"); mainMenu.addEventListener("click", function(e) { var item = e.target.closest(".item"); var submenu = item.querySelector(".submenu"); var itemTitle = item.querySelector(".item_title"); if (e.target == itemTitle) { submenu.classList.toggle("none"); for (var i = 0; i < itemChild.length; i++) if (itemChild[i] != submenu) itemChild[i].classList.add("none") } }); </script> </body> </html> |
Я хочу что бы при клике, у главного пункта менялся цвет, но почему меняется у всех, если я сделал по тому же принципу? http://plnkr.co/edit/OQxzD9Y4NVmQtihFpNir?p=preview
|
DivMan,
<!DOCTYPE HTML> <html> <head> <style> .none{display: none;} ul{ list-style: none; padding: 0; } .submenu{ background: #e7e7e7; } .item_title{ background: #696666; cursor: pointer; } .active{background: #ff8663;} </style> <meta charset="utf-8"> </head> <body> <ul class="mainMenu"> <li class="item"> <div class="item_title active" >Основы языка и как на нём говорить правильно</div> <ul class="submenu"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title" >Функции</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title" >Обработка ошибок и отладка</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title">Объекты и массивы</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> <li class="item"> <div class="item_title">События</div> <ul class="submenu none"> <li>Лексическая структура</li> <li>Типы данных, значения и переменные</li> <li>Выражения и операторы инструкции</li> </ul> </li> </ul> <script> var mainMenu = document.querySelector(".mainMenu"), itemChild = mainMenu.querySelectorAll(".submenu"); mainMenu.addEventListener("click", function(e) { var item = e.target.closest(".item"); var submenu = item.querySelector(".submenu"); var itemTitle = item.querySelector(".item_title"); if (e.target == itemTitle) { submenu.classList.toggle("none"); itemTitle.classList.toggle("active"); for (var i = 0; i < itemChild.length; i++) if (itemChild[i] != submenu) { itemChild[i].classList.add("none"); itemChild[i].previousElementSibling.classList.remove("active"); } } }); </script> </body> </html> |
Часовой пояс GMT +3, время: 19:34. |