可折叠菜单javascript问题

时间:2011-06-23 11:51:04

标签: javascript menu folding

我正在努力使用可折叠的垂直菜单。下面脚本的第一部分工作,以便上层UL显示其兄弟LI,而其他UL保持其兄弟LI隐藏。 我的困难任务(至少对我来说)是让父级UL到活动链接保持其兄弟LI可见。这是我在脚本的下半部分尝试的。 我的a-links有时会得到一个尾随哈希(#),我想删除它以便将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 :(得分:0)

我最终得到了这个解决方案。由于它是一个Wordpress网站,当逐步浏览菜单中的菜单项时,我可以通过比较活动帖子的链接来检查每个链接是否处于活动状态,并将类“current”插入这些菜单项:

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解决这个问题,但我实现了我想要的目标。