我正在尝试使用嵌套的无序列表创建一个多级手风琴。
我想要完成的任务:
仅显示“有效”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>
答案 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
最高ul
,activepage
有效URI
)