We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 5020
    • 14 Posts
    Здравствуйте мои дорогие, помогите решить надеюсь простенькую задачку, есть левое меню на сайте типа аккордеон.
    Как заставить Wayfinder держать открытым блок если мы находимся на вложенной странице пункта, например нажав на пункт "Услуги"
    jquery возвращает return:false и слайдом открывает вложенный список меню, далее кликаю на вложенный пункт и перехожу на страницу, и вот тут вопрос как развернутым держать этот блок, если мы находимся на вложенной странице пункта?.

    <ul class="left_m">
    <li><a href="" class="current">Услуги</a>

    <ul class="sub_menu" style="display: block;">
    <li class="activs"><a href="">Ощущение тела</a></li>
    <li class="last"><a href="">Преимщество занятия</a></li>
    </ul>

    </li>
    <li><a href="" class="current">Скидки Catherine</a></li>
    <li><a href="" class="current">Акции</a></li>
    </ul>


    А вот код квери

    $(function(){
    $(’a.current’).click(function(){
    $(’ul.sub_menu’).slideUp();
    if($(this).next(’ul’).css(’display’) == ’none’) $(this).next(’ul’).slideToggle(300);
    return false;
    });
    });


    Или подскажите, как сделать так называемый "аккордеон"? из этого всего, ведь его я и пытаюсь сделать! Но опыта мало еще с MODx smiley
      • 36442
      • 97 Posts
      У Вас немного каша в классах, но это не существенно. Wayfinder по умолчанию добавляет класс active каждому активному элементу в дереве (снизу вверх на одном уровне) - для этого достаточно вставить плейсхолдер для класса в нужном шаблоне.
      В случае, если класс active добавить активному <li>, работающий скрипт выглядит так:
      $(function(){
      	 $('ul.sub_menu').slideUp(); // для начала закрываем все элементы аккордеона
      	 $('ul.left_m li.active ul').slideToggle(300); // раскрываем список активного элемента (контейнера), ну а дальше ваш код
      	 $('a.current').click(function(){
               $('ul.sub_menu').slideUp();
               if($(this).next('ul').css('display') == 'none') $(this).next('ul').slideToggle(300);
               return false;
            });
         });

      Если не очень понятно - отпишитесь, я объясню поподробнее.
        • 5020
        • 14 Posts
        Quote from: Warsteiner at May 16, 2011, 09:38 AM

        У Вас немного каша в классах, но это не существенно. Wayfinder по умолчанию добавляет класс active каждому активному элементу в дереве (снизу вверх на одном уровне) - для этого достаточно вставить плейсхолдер для класса в нужном шаблоне.
        В случае, если класс active добавить активному <li>, работающий скрипт выглядит так:
        $(function(){
        	 $('ul.sub_menu').slideUp(); // для начала закрываем все элементы аккордеона
        	 $('ul.left_m li.active ul').slideToggle(300); // раскрываем список активного элемента (контейнера), ну а дальше ваш код
        	 $('a.current').click(function(){
                 $('ul.sub_menu').slideUp();
                 if($(this).next('ul').css('display') == 'none') $(this).next('ul').slideToggle(300);
                 return false;
              });
           });

        Если не очень понятно - отпишитесь, я объясню поподробнее.

        Спасибо большое, но у меня все таже проблема, активный болк закрыт как и в моем скрипте.
        Вот что получается и все равно все закрыто. sad
        <li><a title="Услуги" href="" class="current">Услуги</a>
        <ul class="sub_menu" style="display: block;">
        <li class="activ"><a title="Базовое обучение" href="">Базовое обучение</a></li>
        <li class="last"><a title="Повышение квалификации" href="">Повышение квалификации</a></li>
        </ul></li>

        Объясните пожалуйста как подправить что бы с активным пунктом вложенного меню, основное было открыто!?
          • 36442
          • 97 Posts
          Попробуйте такой вариант скрипта:
          <script type="text/javascript">
          $(function(){
          	$('ul.sub_menu').slideUp();
          	$('ul.sub_menu').filter(":has(li.activ)").slideToggle(300);
          	$('a.current').click(function(){
                  $('ul.sub_menu').slideUp();
                  if($(this).next('ul').css('display') == 'none') $(this).next('ul').slideToggle(300);
                  return false;
                });
             });
          </script>
            • 5020
            • 14 Posts
            К сожалению тоже самое, я просто понимаю в чем суть, MODx в таком варианте не видит что открытый подраздел является его вложенным, поэтому только активному пункту ставит класс activ, я же не кликаю на верхний уровень который return false получается, посмотреть бы пример снипета с таим меню как аккордеон?
              • 36442
              • 97 Posts
              Да MODX тут и непричём совсем. Выложите хтмл-код меню, из браузера.
                • 5020
                • 14 Posts
                Quote from: Warsteiner at May 25, 2011, 04:13 PM

                Да MODX тут и непричём совсем. Выложите хтмл-код меню, из браузера.



                <ul class="left_m">
                <li><a class="current" href="/uslugi.html" title="Услуги">Услуги</a>
                
                <ul class="sub_menu"><li><a href="/uslugi/bazovoe-obuchenie.html" title="Базовое обучение">Базовое обучение</a></li>
                <li class="last"><a href="/uslugi/povyishenie-kvalifikaczii.html" title="Повышение квалификации">Повышение квалификации</a></li>
                </ul>
                
                </li>
                
                <li><a class="current" href="/skidki.html" title="Скидки">Скидки</a>
                
                <ul class="sub_menu"><li><a href="/skidki/seminaryi.html" title="Семинары">Семинары</a></li>
                <li class="last"><a href="/skidki/requirements.html" title="Основные требования">Основные требования</a></li>
                </ul>
                
                </li>
                
                <li><a class="current" href="/akczii.html" title="Акции">Акции</a>
                
                <ul class="sub_menu">
                <li><a href="/akczii/materialyi-dlya-dizajna.html" title="Материалы для дизайна">Материалы для дизайна</a></li>
                
                </ul>
                
                </li>
                </ul>
                


                А вот при нахождении на странице "Базовое обучение" это внложенный пункт первого пункта меню. И все равно закрыто все. к <li> добавляется <li class="activs">.

                <ul class="left_m">
                <li><a class="current" href="/uslugi.html" title="Услуги">Услуги</a>
                
                <ul class="sub_menu">
                <li class="activs"><a href="/uslugi-catherine/bazovoe-obuchenie.html" title="Базовое обучение">Базовое обучение</a></li>
                <li class="last"><a href="/uslugi/povyishenie-kvalifikaczii.html" title="Повышение квалификации">Повышение квалификации</a></li>
                </ul>
                
                </li>
                
                <li><a class="current" href="/skidki.html" title="Скидки">Скидки</a>
                
                <ul class="sub_menu">
                <li><a href="/skidki/seminaryi.html" title="Семинары">Семинары</a></li>
                <li class="last"><a href="/skidki/requirements.html" title="Основные требования">Основные требования</a></li>
                </ul>
                
                </li>
                
                <li><a class="current" href="/akczii.html" title="Акции">Акции</a>
                
                <ul class="sub_menu">
                <li><a href="/akczii/materialyi-dlya-dizajna.html" title="Материалы для дизайна">Материалы для дизайна</a></li>
                
                </ul>
                
                </li>
                </ul>