jQuery列表项菜单

jQuery列表项菜单,jquery,menu,traversal,Jquery,Menu,Traversal,我们有一个主菜单,它可以由任意数量或父-子项组成。我们希望所有儿童ULs隐藏开始,然后点击一个给定的李它的儿童UL显示 你可以在这里看到这一点: 我们正在努力解决的问题是将相关的UL隐藏在父UL或兄弟UL之外 因此,本质上它是一个下拉菜单,类似于这样,在单击而不是滚动时工作: $("ul.nav_categories ul").hide(); $("ul.nav_categories li").hover(function(){ if ($("> ul", this).length

我们有一个主菜单,它可以由任意数量或父-子项组成。我们希望所有儿童ULs隐藏开始,然后点击一个给定的李它的儿童UL显示

你可以在这里看到这一点:

我们正在努力解决的问题是将相关的UL隐藏在父UL或兄弟UL之外

因此,本质上它是一个下拉菜单,类似于这样,在单击而不是滚动时工作:

$("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个项目。列表是动态的,因此我们不知道级别的数量。

总编辑。当然,解决方案必须非常简单三,

$("ul.nav_categories ul").hide();

$("ul.nav_categories li").click(function(){
    $('li > ul').not($(this).parents('ul')).hide();
    $(this).find('> ul').show();
    return false;
});

总编辑量。当然,解决方案必须非常简单三,

$("ul.nav_categories ul").hide();

$("ul.nav_categories li").click(function(){
    $('li > ul').not($(this).parents('ul')).hide();
    $(this).find('> ul').show();
    return false;
});

什么东西在第一小提琴中不起作用?
$(“ul.nav_类别ul”).hide()应替换为
ul.nav_categories ul{display:none;}
-在第一小提琴中,我们需要在单击另一个li时隐藏ul,因此我们一次只显示列表中的一条路径。在第一小提琴中,什么不起作用?
$(“ul.nav_categories ul”).hide()应该替换为
ul.nav_categories ul{display:none;}
在CSS.adeneo中-首先,当单击另一个li时,我们需要隐藏ul,因此我们一次只显示列表中的一条路径。在JSFIDDLE中单击时,嵌套菜单不会打开这几乎可以工作-尽管我认为单击“子页面a(有子页面)”第二次应该关闭该节点。:?嗨,卡洛扬,这就快到了,谢谢。正如Nathan指出的,这需要在不同的深度下工作,如果我们添加另一个级别,它将不再工作。。。请参见这里的示例:在JSFIDLE中,嵌套菜单不会在单击时打开。这几乎可以工作-尽管我认为第二次单击“子页面A(有子页面)”应该会关闭该节点。:?嗨,卡洛扬,这就快到了,谢谢。正如Nathan指出的,这需要在不同的深度下工作,如果我们添加另一个级别,它将不再工作。。。请参见此处的示例: