【发布时间】:2012-06-11 14:00:21
【问题描述】:
我在 jquery 中编写了一个 3 级下拉菜单,一切正常,除了当我折叠顶层时,它不会折叠第三级,即:
level 1
level 2
level 3
当我折叠它时,我得到:
level 1
level 3
什么时候应该读:
level1
我知道您可以使用 silbing 函数来执行此操作,但随后我遇到了问题,因为我也在使用切换类来根据菜单是否打开来更改朝右或朝下的箭头。它会关闭两个子菜单级别,但不会切换它们,因此当您重新打开该菜单时,箭头应该朝右时仍然朝下。
这是我的来源:
$(function() {
$("li.level2").hide();
$("li.level3").hide();
$("ul.navigation").delegate(".level1", "click", function() {
var item=$(this);
$(this).nextUntil(".level1", ".level2", ".level3").toggle();
$(this).toggleClass("highlight");
});
$("ul.navigation").delegate(".level2", "click", function() {
var item=$(this);
$(this).nextUntil(".level2",".level3").toggle();
$(this).toggleClass("highlight");
});
});
Jsfiddle here。基本上绿色是 1 级,橙色是 2 级,红色是菜单打开时,如果单击“代数”,然后单击“11 年”,则打开 2 个子菜单,然后再次单击代数,它不会关闭下面的子菜单11 年,当您使用 .siblings() 时,切换功能未激活,因此当您再次单击“代数”重新打开它时,会读取“11 年”,因为它尚未切换。
【问题讨论】:
-
您是否能够修改菜单的 HTML 或者您是否坚持给定的结构?
-
是的,我可以将结构修改为任何内容
标签: javascript jquery