jQuery手风琴菜单:设置活动类

时间:2012-06-07 11:48:49

标签: jquery accordion jquery-ui-accordion

我有手风琴菜单:

<ul id="menu">
    <li>
        <a href="#" class="highmenu">Menu1</a>
        <ul class="sub">
            <li class="submenulink">Menu1Link1</li>
            <li class="submenulink">Menu1Link2</li>
        </ul>
    </li>
    <li>
        <a href="#" class="highmenu">Menu2</a>
        <ul class="sub">
            <li class="submenulink">Menu2Link1</li>
            <li class="submenulink">Menu2Link2</li>
        </ul>
    </li>
</ul>

这是我正在使用的jQuery脚本:

$(document).ready(function() {
    var pathname = window.location.pathname;
    $("#menu ul").hide();
    $("#menu a[href='" + pathname + "']").parents(".sub").show();
    $("#menu li a").click(function() {
        var checkElement = $(this).next();
        if ((checkElement.is("ul")) && (checkElement.is(":visible"))) {
            return false;
        }
        if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
            $("#menu ul:visible").slideUp("normal");
            checkElement.slideDown("normal");
            return false;
        }
    });
});

我想要的是当特定子打开时,相应的高级菜单将设置为highmenu active类,当隐藏子级时,活动类将被删除。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

这个怎么样?每次单击链接时,都会从所有链接中删除所有活动类,然后仅将其应用于适当的类:

var pathname = window.location.pathname;
$("#menu ul").hide();
$("#menu a[href='" + pathname + "']").parents(".sub").show();
$("#menu li a").click(function() {

    $("#menu li a").removeClass("active");
    $(this).addClass("active");

    var checkElement = $(this).next();
    if ((checkElement.is("ul")) && (checkElement.is(":visible"))) {
        return false;
    }
    if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $("#menu ul:visible").slideUp("normal");
        checkElement.slideDown("normal");
        return false;
    }
});​

在这里工作小提琴:http://jsfiddle.net/jKGNA/