关闭所有div,除了用childs打开的div

时间:2014-08-06 11:57:32

标签: jquery

我有一个带有嵌套无序列表的无序列表(树),依此类推......我想要完成的是隐藏所有不在被点击的.subnav内的li > a 1}}。

看看这个jsfiddle

示例:

点击A => A1A2已打开

点击A1 => A1-aA1-b已打开

点击A2 => A2-aA2-b已打开,A1应已关闭

点击B => B1B2已打开,应关闭整个A

我想隐藏主ul中不需要的所有内容,只留下被点击的元素。它应该可以无限制地嵌套:)

我尝试了不同的东西,但都没有按预期工作:

$('.subnav').not(subnav).hide();
$('.subnav').not(that).hide();
$('.subnav').not(this).hide();

我不知道如何完成这种行为。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

最简单的,我建议:

$('.nav > li > a').click(function(e) {
    $(this).next('.subnav').toggle()
    // find the ancestor 'li' elements:
    .parents('li')
    // select the siblings (also 'li' elements):
    .siblings()
    // find the '.subnav' elements within those sibling 'li' elements:
    .find('.subnav')
    // hide them:
    .hide();
});

JS Fiddle demo

参考文献: