0

我正在研究各种多层导航,但我不确定如何在这种情况下实现 .not 功能。

如果您查看菜单,它会按预期工作,但我想排除 1 级导航,因此,当打开子 UL 时,1 级 LI 的兄弟姐妹保持可见。

我不确定我是否解释得太好了,所以附上了一个 jsfiddle,希望有人可以帮助我完成这项工作。

JSFiddle

这是我的javascript(我知道有些变量是多余的,没有优化,供以后使用)

var navLevel1 = $(".level-1-list");
var navLevel2 = $(".level-2-list");
var navLevel3 = $(".level-3-list");
var navLevel4 = $(".level-4-list");
var navLevel5 = $(".level-5-list");

navLevel2.hide();
navLevel3.hide();
navLevel4.hide();
navLevel5.hide();


function listMenuTrigger(listItemWithChildren) {
 listItemWithChildren.next("ul").toggle();
  listItemWithChildren.closest("li").not("level-1-list li").siblings().toggle();//not not working

if (listItemWithChildren.next("ul").is(":visible")) {
    listItemWithChildren.removeClass("colapsed");   
    listItemWithChildren.addClass("expanded");  
}
else {
    listItemWithChildren.removeClass("expanded");   
    listItemWithChildren.addClass("colapsed");
}
}

$(".list-menu li:has(ul)").children("span").addClass("colapsed");

$( document ).ready(function() {
$(".colapsed").click(function(){       
   listMenuTrigger( $(this) );             
})
}); 
4

1 回答 1

2

你不是指level-1-list一个班级。(另外,你需要确保你只是在not()ing 它的直系孩子。这让我有一阵子绊倒。)

listItemWithChildren.closest("li").not(".level-1-list>li").siblings().toggle();//not now working

编辑添加:JSFiddle

于 2013-07-12T17:04:39.600 回答