We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 5020
    • 14 Posts
    Здравствуйте!
    Не так давно увлекаюсь ModX, пытаюсь разобраться, но не всегда получается, обращаюсь к вам за поддержкой.

    Цель такая, обычное меню с одним уровнем вложенности, пытаюсь сделать так, что бы по клику на верхнем пункте срабатывала jquery функция click, и без обновления странички если есть вложенный список ul, он раскрывался slideUp(), а при клике на следующем пункте, открытый закрывался а новый открывался. Но проблема в том у меня, что я в коде Wayfinder добавил class="sh" и onclick="return false":

    $this->_templates[$n] = ’<li [+wf.id+][+wf.classes+]><a class="sh" onclick="return false" href="[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>[+wf.wrapper+]</li>’;

    и это все подставляется ко всем тегам <a>, а мне нужно только в верхних пунктах sad, и получается из за onclick="return false" никакие пункты не работают, и следующий <ul> не закрывается.

    вот jquery код:
    $(function(){
    $(’a.sh’).click(function(){
    $(’.sid_m ul.mmenu’).slideUp();
    if($(this).next(’ul’).css(’display’) == ’none’) $(this).next(’ul’).slideToggle(300);
    //return false;
    });
    });

    Вот меню:
    <div class="sid_m">
    <ul class="mmenu">
    <li><a title="" href="/about.html" onclick="return false" class="sh">О НАС</a>
    <ul>
    <li><a title="Контакты" href="/contact.html" onclick="return false" class="sh">контакты</a></li>
    <li><a title="Контакты" href="/contact.html" onclick="return false" class="sh">контакты</a></li>
    <li><a title="Контакты" href="/contact.html" onclick="return false" class="sh">контакты</a></li>
    </ul>
    </li>
    </ul>

    подскажите пожалуйста, как реализовать? У меня есть мысль, проверку написать на верхний пункт, на то что если есть вложенность, то onclick="return false" и показывай вложенный список без перехода куда либо, а если нет вложенного списка, то href="" и вперед.
    Но не знаю как опять таки это сделать в Wayfinder sad, подскажите что и как для этой цели сделать грамотней!? Пожалуйста
      • 5020
      • 14 Posts
      помогите же кто нибуть!!! huh
        • 74
        • 74 Posts
        А причем здесь Wayfinder?

        Вопрос по Jquery)
        Сначала нужно проверить существование подменю:
        if($('a.sh').next('ul').length){
        
        //код для вызова подменю
        
        }else{
        //ничего не делаем – переход по ссылке
        }
        
          • 12710
          • 132 Posts
          http://modxcms.com/forums/index.php/topic,39300.msg237326.html#msg237326

          только сайт с демо уже не работает
          И ссылки на jquery с оффсайта теперь тоже не работают
            Человек может все, главное захотеть
            http://vigmarket.com
            • 5020
            • 14 Posts
            ничего не получается, с этим вариантом, при клике просто все меню слайдом закрывается sad, потому что опять же получается что Wifinder на все пункту вешает события

            вот как сделал ваш вариант, Спасибо конечно большое

            $(document).ready(function(){
            $("ul:not(:first)").hide();
            $("li a").click(function(){
            $("ul:visible").slideUp("slow");
            $(this).parent().next().slideDown("slow");
            return false;
            });
            });
              • 1788
              • 1,103 Posts
                • 5020
                • 14 Posts
                к сожалению тоже не годится, а если сам пункт имеет страничку? помимо вложенных в себя пунктов! Тогда получится что на нее и не попасть, дело в том что Wifinder, так сделан непонятно для меня, что я не могу написать проверку, на наличие вложенных пунктов, и подставить нужные классы или id, остальное дело jquery, так что вопрос открыт sad
                  • 74
                  • 74 Posts
                  дело в том что Wifinder, так сделан непонятно для меня, что я не могу написать проверку, на наличие вложенных пунктов
                  Wayfinder сделан понятно, нужно просто читать документацию.
                  Он выводит только то, что мы пропишем в его шаблонах.

                  Проверку эту я написал выше. См. мой пост от 7 января.
                  $('a.sh').next('ul').length

                  этот код проверяет существование вложенного подменю после тега <a> с class="sh".

                  Кстати onclick="return false" лучше тоже динамически добавлять.