Разборное меню JavaScript проблема - PullRequest
0 голосов
/ 23 июня 2011

Я борюсь со складным вертикальным меню.Первая часть приведенного ниже сценария работает так, что верхний UL отображает свои родственные LI, а другие UL скрывают свои родственные LI.Моя трудная задача (по крайней мере для меня) состоит в том, чтобы сделать родительский UL активной линии связи видимым.Это то, что я пробовал в нижней части сценария.Мои a-ссылки иногда получают конечный хеш (#), который я хочу удалить, чтобы сравнить i с активным URL.Это делается с помощью функции trimHash (string), которая работает при тестировании на простой строке, но не в этом скрипте.Любой хороший совет там?

$(document).ready(function() {
        // Collapse everything but the first menu:
        $(".mainmenu > li > a").not(":first").find("+ ul").slideUp(1);
        // Expand or collapse:
        $(".mainmenu > li > a").click(function() {
            $(this).find("+ ul").slideToggle("fast");
        });

     $(".mainmenu li").each(function () {
        var li = $(this);
        var a = rtrimHash(li[0].firstChild);

        if (a.href == location.href) {
          $(this).find("+ ul").slideDown(1);
        }
    });

1 Ответ

0 голосов
/ 27 июня 2011

Я закончил с этим решением.Так как это сайт Wordpress, проходя по пунктам меню в меню, я мог проверить, активна ли каждая ссылка, сравнивая ссылку с активным сообщением, и вставить класс «текущий» в следующие пункты меню:

echo '<li class="child';
if ( $menuPost->ID == $post->ID ) { echo ' current'; }

А затем с помощью jQuery найдите все экземпляры класса li "current" и вызовите родительский ul для slideDown:

$(document).ready(function() {
    // Collapse everything:
    $("li.cat").find("+ ul").slideUp(1);

    // Collapse everything but the first menu:
    //$("li.cat").not(":first").find("+ ul").slideUp(1);

    // Expand or collapse:
    $("li.cat").click(function() {
        $(this).find("+ ul").slideToggle("fast");
    });
    $("li.current").parent().slideDown(1);  
});

Извините, я не решил эту проблему с помощью javascript, как планировал,но я добился того, чего хотел.

...