Многоуровневое меню на JS и jQuery

267
24 августа 2017, 22:42

Когда то на одном проекте, второпях написал код для очень запутанной многоуровневой навигации с кучей подменю.

Конкретно этот кусок отвечал за отображение следующего уровня меню с содержанием соответствующим нажатой кнопке. То есть при нажатии на кнопку с одним из классов [".1st", ".2nd", ".3rd"], элемент в другом блоке, например div.1st_list получает класс .active, но если .2nd уже .2nd.active, то сначала у .2nd.active удаляется .active и уже потом div.1st_list получает .active. То есть одновременно активным может быть только один элемент.

       $(function() {
   Sub_menus = [".1st", ".2nd", ".3rd"]
   for (var i = 0; i < Sub_menus.length; i++) {
       (function(sub_item) {
           $("." + sub_item + "_item").click(function() {
              if ($("." + sub_item + "_list.active")[0]) {
                   $(".gne_snd .dynamic_inner>div").removeClass("active");
                   $(".gne_snd").removeClass("active");
                   $(this).removeClass("for_anim");
               } else if ($(".gne_snd.active")[0]) {
                   $(".gne_snd .dynamic_inner>div").removeClass("active");
                   $("." + sub_item + "_list").toggleClass("active");
               } else {
                   $(".gne_snd").toggleClass("active");
                   $("." + sub_item + "_list").toggleClass("active");
               }
           });
       })(Sub_menus[i]);
   }});


Поскольку и JS, и jQuery знаю очень поверхностно, написал как мог.

И собственно, что хочу узнать.
Есть ли более элегантные, может быть эффективные, решения для подобных задач? Как еще можно написать код для такой задачи?

READ ALSO
React выплывающее окно

React выплывающее окно

Есть две компоненты родительская и дочерняя (header)Как сделать так чтоб при клике на элемент в хедере окошко всплывало, на на клик в любой области...

292
Фильтрация таблицы с помощью select vue.js

Фильтрация таблицы с помощью select vue.js

Как отфильтровать таблицу по значению selectНапример, если выбирается select с value admin то показать строки таблицы со значением admin

553
Удаление повторяющихся слов из строки

Удаление повторяющихся слов из строки

Есть строка, необходимо удалить из неё всё повторяющиеся слова те из строки http://spb

314
Как пройти по объекту как ключ значение

Как пройти по объекту как ключ значение

Есть такая структура данных

320