采用UL的Jquery多级手风琴

时间:2010-03-03 21:31:47

标签: jquery accordion

我正在尝试使用嵌套的无序列表创建一个多级手风琴。

我想要完成的任务:

  • 仅显示“有效”ul(其他 保持隐藏)

  • 当有嵌套的ul - 切换时 只有嵌套的ul(2222 - > 2.1)

此处的完整代码:http://pastie.org/852421

JS

$(document).ready(function() {

    $('ul.menu li ul').hide();

    $('ul.menu li a').click(function(e){

        $('ul.menu li a').each(function(i){
            if($(this).next().is("ul") && $(this).next().is(":visible")){
                $(this).next().slideUp("fast");
            }
        });

        var e = $(e.target);                

        if(e.next().is("ul") && e.next().is(":visible")){
            e.next().slideUp("fast");
            } else {
            e.next().slideDown("fast");
        }
    });

});

HTML

<ul class="menu">
    <li><a href="#">11111</a>
        <ul>
            <li><a href="#" id="one">1.1</a></li>
            <li><a href="#" id="one">1.2</a></li>
        </ul>
    </li>
    <li><a href="#">22222</a>
        <ul>
            <li><a href="#">2.1+ (problem)</a>
                <ul>
                    <li><a href="#">2.1.1</a></li>
                    <li><a href="#">2.2.2</a></li>
                </ul>
            </li>
            <li><a href="#">2.2</a></li>
        </ul>
    </li>
    <li><a href="#">33333</a>
        <ul>
            <li><a href="#">3.1</a></li>
            <li><a href="#">3.2</a></li>
        </ul>
    </li>
</ul>

1 个答案:

答案 0 :(得分:1)

只需将类.active添加到活动li,然后使用jQuery调用:

$("ul:has(li.active)").slideDown();

简单;]

编辑:
另外,我之前使用过以下内容:

$(rootparent+' ul').hide();
$(rootparent+' ul:has(li#active)').show();
$(rootparent+">li:has(a[href*='"+activepage+"'])>ul").show();

rootparent最高ulactivepage有效URI