Jump to content
  • 0

Посоветуйте хороший скрипт меню-аккордеон


Torawhite
 Share

Question

Здравствуйте! Посоветуйте, пожалуйста, хороший скрипт меню типа "аккордеон". Возможно, кто-то использует. Перепробовал масссу, включая с завязкой на куках. Необходимо, чтобы он добавлял определенный класс всем родительским элементам списка и списки, имеющие этот класс раскрывались. по умолчанию закрыт, раскрывается по клику. Без куков, они слишком много следят

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Еще есть harmonika  http://masscode.ru/index.php/k2/item/51-liharmonica   . я так сам пишу обычно :wacko:

Спасибо! Сегодня вечеером оба попробую. Сам я в javascript разбираюсь плохо, во всяком случае, на данный момент(

Link to comment
Share on other sites

  • 0

Еще есть harmonika  http://masscode.ru/index.php/k2/item/51-liharmonica   . я так сам пишу обычно :wacko:

Этот скрипт не добавляет класс каждому родительскому элементу, не подсвечивает.Да и с моим списком работать отказывается :(

Долго пользовался этим

Спасибо! Но я пробовал, видимо, его же и она использует куки. С ними как раз и проблема - у меня несколько страниц, при переходе на которые необходимо сбрасывать куки, иначе он светит всё, что запомнил и это сбивает с толку. маялся с ним долго, но элегантного решения так и не нашёл. Тем более, он не раскрывал меню, если подсветку текущего раздела делает сервер - передаю параметр при помощи хлебных крошек обратно в раздел

Link to comment
Share on other sites

  • 0
Этот скрипт не добавляет класс каждому родительскому элементу, не подсвечивает.Да и с моим списком работать отказывается

Дык а допилить разве проблема, класс добавлять нужно средствами серверного кода или у вас контент аяксом грузится.... сомневаюсь И что у вас за список? разве кто то отменял <ul><li></li></ul>  ? :wacko:

Edited by Andryshok
Link to comment
Share on other sites

  • 0

 

Этот скрипт не добавляет класс каждому родительскому элементу, не подсвечивает.Да и с моим списком работать отказывается

Дык а допилить разве проблема, класс добавлять нужно средствами серверного кода или у вас контент аяксом грузится.... сомневаюсь И что у вас за список? разве кто то отменял <ul><li></li></ul>  ? :wacko:

 

Без аякса. Список получаю так один:

global $category;echo "<li>";if($menu['childs']){echo "<a";if($category == $menu['id']){echo " class='active_category'";}echo " href='?parent=" . $menu['parent_id'] . "&category=" . $menu['id'] . "'>" . $menu['title'] . "</a><ul>" . map_tree_to_string($menu['childs']) ."</ul>";}else {echo "<a";if($category == $menu['id']){echo " class='parent active_category'";}echo " href='?parent=" . $menu['parent_id'] . "&category=" . $menu['id'] . "'>" . $menu['title'] . "</a>";}echo "</li>"

Так - второй:

foreach($cat AS $key => $item){if(count($item)>1){echo "<li><a";if(($parent == $key) AND !isset($top)){echo " class='active_parent'";} echo " href='#'><span></span>$item[0]</a><ul><li><a";if(($category == $key) AND !isset($top)){echo " class='active_category'";} echo " href = '?view=magazine_rubric&parent=$key&category=$key' target = '_self' >Все статьи</a></li>";$par = $key;foreach($item[sub] AS $key => $sub) {echo "<li><a";if(($category == $key) AND !isset($top)){echo " class='active_category'";} echo " href = '?view=magazine_rubric&parent=$par&category=$key' target = '_self' >$sub</a></li>";}echo "</ul></li>";}elseif($item[0]){echo "<li><a";if(($parent == $key) AND !isset($top)){echo " class='active_parent'";} echo " href='#'><span></span>$item[0]</a><ul><li><a";if(($category == $key) AND !isset($top)){echo " class='active_category'";} echo " href = '?view=magazine_rubric&parent=$key&category=$key' target = '_self' >Все статьи</a></li></ul></li>";}}
Link to comment
Share on other sites

  • 0

 

Этот скрипт не добавляет класс каждому родительскому элементу, не подсвечивает.Да и с моим списком работать отказывается

Дык а допилить разве проблема, класс добавлять нужно средствами серверного кода или у вас контент аяксом грузится.... сомневаюсь И что у вас за список? разве кто то отменял <ul><li></li></ul>  ? :wacko:

 

Класс добавить не проблема текущему и его родителю средствами сервера, а родителям выше как добавить я не знаю, не хватает опыта и знаний. Плюс мне нужно класс по клику добавлять - список раскрылся - загорелся, тут сервер бессилен. А список классический вывыденный список выглядит так:

<aside class="left_sidebar">    <ul class="left_sidebar_nav">        <li><a href='?parent=0&category=1'><span></span>Гардероб</a>    <ul><li><a href='?parent=1&category=3'><span></span>Мужской</a>    <ul><li><a href='?parent=3&category=5'><span></span>Одежда</a>    <ul><li><a href='?parent=5&category=11'>Куртки</a></li></ul></li><li><a href='?parent=3&category=6'>Обувь</a></li><li><a href='?parent=3&category=7'>Аксессуары</a></li></ul></li><li><a href='?parent=1&category=4'><span></span>Женский</a>    <ul><li><a href='?parent=4&category=8'><span></span>Одежда</a>    <ul><li><a href='?parent=8&category=12'>Куртки</a></li></ul></li><li><a href='?parent=4&category=9'>Обувь</a></li><li><a href='?parent=4&category=10'>Аксессуары</a></li></ul></li></ul></li><li><a href='?parent=0&category=2'>Электроника</a></li>    </ul></aside>
Link to comment
Share on other sites

  • 0

А по клику не надо показывать содержимое категории? просто раскрыть? ну можно  примерно так

 $('.spisok> ul > li > a').click(function(e) {        $('.catalog > ul > li').each(function() {            $(this).removeClass("selected");        });        if($(this).closest('li').find('ul').length){            $('.catalog ul ul').each(function() {                $(this).hide();            });            $(this).closest('li').addClass("selected");            $(this).closest('li').find('ul').show();            return false;        }	    });

А если дерево решили строить.... ну чем бы вам помочь... есть у меня собственная библиотека для CI строит дерево рекурсией на основе выборки query из базы и добавляет класс выбранному и родителям.... только подойдет ли она вам? а так могу поделиться впринципе, если поможет, сайт ваш на чем? на голом php али фреймворке али тормозуха CMS ?

Edited by Andryshok
Link to comment
Share on other sites

  • 0

А по клику не надо показывать содержимое категории? просто раскрыть? ну можно  примерно так

 $('.spisok> ul > li > a').click(function(e) {        $('.catalog > ul > li').each(function() {            $(this).removeClass("selected");        });        if($(this).closest('li').find('ul').length){            $('.catalog ul ul').each(function() {                $(this).hide();            });            $(this).closest('li').addClass("selected");            $(this).closest('li').find('ul').show();            return false;        }	    });

А если дерево решили строить.... ну чем бы вам помочь... есть у меня собственная библиотека для CI строит дерево рекурсией на основе выборки query из базы и добавляет класс выбранному и родителям.... только подойдет ли она вам? а так могу поделиться впринципе, если поможет, сайт ваш на чем? на голом php али фреймворке али тормозуха CMS ?

Спасибо! Сайт на голом php. Выборку делаю по такому принципу . Выводится всё корректно, вроде. разобрался со криптом metisMenu . Но! при добавлении класса active он раскрывает список только, если один уровень вложенности, если li c классом active где-то глубоко, то он список не раскрывает и классы родителям не проставляет. Сайт для наглядности, над которым тружусь. Там два списка - в журнале список работает так, как нужно, а в маркете уровней вложенности больше, там работает некорректно

Link to comment
Share on other sites

  • 0

 

А по клику не надо показывать содержимое категории? просто раскрыть? ну можно  примерно так

 $('.spisok> ul > li > a').click(function(e) {        $('.catalog > ul > li').each(function() {            $(this).removeClass("selected");        });        if($(this).closest('li').find('ul').length){            $('.catalog ul ul').each(function() {                $(this).hide();            });            $(this).closest('li').addClass("selected");            $(this).closest('li').find('ul').show();            return false;        }	    });

А если дерево решили строить.... ну чем бы вам помочь... есть у меня собственная библиотека для CI строит дерево рекурсией на основе выборки query из базы и добавляет класс выбранному и родителям.... только подойдет ли она вам? а так могу поделиться впринципе, если поможет, сайт ваш на чем? на голом php али фреймворке али тормозуха CMS ?

Спасибо! Сайт на голом php. Выборку делаю по такому принципу . Выводится всё корректно, вроде. разобрался со криптом metisMenu . Но! при добавлении класса active он раскрывает список только, если один уровень вложенности, если li c классом active где-то глубоко, то он список не раскрывает и классы родителям не проставляет. Сайт для наглядности, над которым тружусь. Там два списка - в журнале список работает так, как нужно, а в маркете уровней вложенности больше, там работает некорректно

 

В скрипте есть строки, которые проверяют наличие класса active и раскрывают список

var $this = this;this.$element.find('li.active').has('ul').children('ul').addClass('collapse in');this.$element.find('li').not('.active').has('ul').children('ul').addClass('collapse');

Возможно, тут можно что-то поменять/добавить, чтобы он каждому родителю добвлял класс active и раскрывал, соответственно?

Скрипт, которым я пользовался до этого работал примерно так:

//open active level$this.find("li.active").each(function() {$(this).parents("ul").slideDown(opts.speed);$(this).parents("ul").parent("li").find("span:first").html(opts.openedSign);});
Edited by Torawhite
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy