我们有一个主菜单,它可以包含任意数量或父子项。我们希望所有子 UL 一开始就隐藏,然后单击给定的 li,它的子 UL 会显示。
你可以在这里看到这个工作:http: //jsfiddle.net/JnL58/12/
$("ul.nav_categories ul").hide();
$("ul.nav_categories li").click(function(el){
el.preventDefault();
var cur_el = $("> ul", this);
if (cur_el.length > 0) {
$("> ul", this).show();
}
});
我们正在努力解决的问题是将相关 UL 的 APART 隐藏在被点击的元素父 UL 或兄弟 Ul 中。
所以本质上它是一个像http://jsfiddle.net/FjCcT/4/这样的下拉菜单,它适用于点击而不是翻转:
$("ul.nav_categories ul").hide();
$("ul.nav_categories li").hover(function(){
if ($("> ul", this).length > 0) {
$("> ul", this).show();
}
}, function(){
if ($("> ul", this).length > 0) {
$("> ul", this).hide();
}
});
请注意,这需要在不同的级别上工作,例如 2、3、4 甚至可能 5 项深度。列表是动态的,因此我们不会知道级别数。