Javascript 可折叠菜单(jquery)所需的最终调整
显示的可折叠菜单远非完美,但它做了我需要它做的事情。。。除了当我扩展一个新的关卡时,我希望能够折叠以前的关卡 举例说明(在小提琴上):Javascript 可折叠菜单(jquery)所需的最终调整,javascript,jquery,css,menu,Javascript,Jquery,Css,Menu,显示的可折叠菜单远非完美,但它做了我需要它做的事情。。。除了当我扩展一个新的关卡时,我希望能够折叠以前的关卡 举例说明(在小提琴上): 单击级别1[1]将其展开 单击Level 2[2]将其展开 单击Level 2[3]将其展开。请注意,级别2[2]现在将折叠。这就是我在……时想要的行为 单击级别1[2]。您可以看到级别1[1]仍处于扩展状态。我希望1级[1]在发生这种情况时崩溃(但显然1级[2]仍在扩展) 注意:我从一个源代码中借用了这个js和css,并对其进行了修改以允许级别3。但后来找不到
注意:我从一个源代码中借用了这个js和css,并对其进行了修改以允许级别3。但后来找不到原始来源。如果有人知道这个代码,请告诉我代码的来源。谢谢您的帮助。问题出在您的html中:在根级别有两个
s,而您只需要其中一个
删除中间的“<代码> < UL类= 'CMANL' ><代码>节。即
function collapseAll() {
$(".cmenu > li > a ").each(function() {
$(this).addClass("collapsed");
$(this).find("+ ul").each(function() {
$(this).css("display","none");
})
})
}
$(document).ready(function () {
var handleCollapsibleMenu = function (e, menu) {
var expanded = e.parent().parent().find('> li > a.expanded').not(e);
expanded.removeClass('expanded').addClass('collapsed').find('+ ul').slideUp('medium');
e.find('+ ul').slideToggle('medium');
};
collapseAll();
$('.cmenu').on('click', '> li > a', function () {
var self = $(this);
var menu = self.parent().parent();
var el = self.find('+ ul');
self.toggleClass('expanded').toggleClass('collapsed');
handleCollapsibleMenu(self, el);
});
})
。。。
现在只是
...
</li>
</ul>
<ul class='cmenu'>
<li><a>Level 1[2]</a>
...
。。。
一级[2]
...
这将在
...
</li>
<li><a>Level 1[2]</a>
...
而不是
<ul>
<li>...</li>
<li>...</li>
</ul>
这导致了问题。感谢您尝试一下,但您的解决方案似乎无法解决我想要解决的问题。你看过JSFIDLE了吗?我认为我需要的解决方案是更改javascript。你可能是对的,html可以改进(我从其他地方复制了脚本),但是html更改并不能解决我的问题。这里有一个更新的小提琴与上述变化-哇!是的,这似乎已经回答了我的问题,但我目前不明白为什么会这样。我将尝试将其应用到我实际的更复杂的菜单中,但它似乎已经解决了。非常感谢!我浏览了JS,没有发现代码有什么问题。然而,为了工作,它希望能够在树中向上移动父节点,然后再次向下移动以隐藏其他分支。它是两个完全独立的
树,因此它不能在一个单独的树上进行上下转换,这也是一个非常有用的解释。我目前正在苦读构建实际菜单的PHP代码,这有助于我理解问题所在。再次感谢!
<ul>
<li>...</li>
</ul>
<ul>
<li>...</li>
</ul>