1

我试图制作一个折叠早期扩展选择的菜单,但我无法使其工作。

var currentId;

$(document).ready(function () {
    $(":range").rangeinput({
        progress: true
    });

    /* Slide Toogle */
    $("ul.expmenu li > div.header").click(function () {
        var arrow = $(this).find("span.arrow");

        if (arrow.hasClass("up")) {
            arrow.removeClass("up");
            arrow.addClass("down");
        } else if (arrow.hasClass("down")) {
            arrow.removeClass("down");
            arrow.addClass("up");
        }

        $('#' + currentId).parent().find("ul.menu").slideToggle();
        $(this).parent().find("ul.menu").slideToggle();
        currentId = $(this).attr('id');
    });
});

您可以在此地址找到主页:http: //admin.dq.se/kramers/nyamenyer.html

因此,如果我按“BIL”,我希望“BIL”展开.. 然后如果我按“MC”,我希望 BIL 折叠并 MC 展开。谢谢您的帮助!

4

3 回答 3

2

在向下滑动之前向上滑动所有内容

$("ul.expmenu li > div.header").click(function () {

 $(this).parent().siblings().find('ul.menu').slideUp();
 $(this).parent().siblings().find('span.arrow').removeClass('up').addClass('down');

....

});
于 2013-03-01T15:31:16.977 回答
0

这不太对:

$(this).parent().find("ul.menu").slideToggle();

你需要走得更高:

$(this).closest('ul.expmenu').find("ul.menu").slideToggle();
于 2013-03-01T15:34:36.913 回答
0

我会做大致这样的事情:

    /* Slide Toogle */
    $("ul.expmenu li > div.header").click(function () {
    var arrow = $(this).find("span.arrow");

    if (arrow.hasClass("up")) {
        arrow.removeClass("up");
        arrow.addClass("down");
    } else if (arrow.hasClass("down")) {
        $('.arrow.up.').parents('li').children('ul.menu').slideUp();
        $('.arrow.up.').removeClass('up').addClass('down');
        arrow.removeClass("down");
        arrow.addClass("up");
    } 

它基本上会查找任何“向上”箭头,并将其菜单向上(注意 DOM 遍历),仅在所讨论的箭头仍然“向下”的情况下。

于 2013-03-01T15:42:46.307 回答