我有一个基本的手风琴风格菜单:http: //jsfiddle.net/JqJce/1/
<ul class="nav level-1">
    <li><a href="#">Link</a></li>
    <li class="has-submenu"><a href="#">Link</a>
    <ul class="level-2">
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
    </ul></li>
    <li class="has-submenu"><a href="#">Link</a>
    <ul class="level-2">
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li class="has-submenu"><a href="#">Link</a>
        <ul class="level-3">
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
        </ul></li>
    </ul></li>
    <li class="has-submenu"><a href="#">Link</a>
    <ul class="level-2">
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
        <li><a href="#">Link</a></li>
    </ul></li>
</ul>
a {
    display:block;
    background:#aaa;
    border:1px solid #ccc;
    padding:5px;
    color:#fff;
}
li li {
    display:none;
}
/* Open/Closed indicators */
.has-submenu > a:after {
 content:' + ';
}
.has-submenu .nav-open:after {
 content:' - ';
}
li li a {
   padding-left:40px;
    background:#888;
}
li li li a {
   padding-left:80px;
    background:#333;
}
这就是我想要发生的事情:
- 单击具有子菜单的链接时,其子菜单会向下滑动
 - 再次单击打开的子菜单的链接时,菜单会折叠
 - 一次只能显示一个顶级子菜单(一次显示多个“2级”或“3级”菜单是可以的)
 - 应该显示未打开的菜单
+,打开的菜单应该显示- - 不幸的是,我无法更改 HTML 标记
 
这是我所拥有的:
$('.has-submenu > a').on('click', function(e){
    e.preventDefault();
    // Need to add/remove .nav-open from links
    // $('a').removeClass('nav-open');
    $(this).toggleClass('nav-open');
    // Not sure what I'm thinking here...   
    // $('.level-1 > .has-submenu').not($(this).parent()).find('li').slideUp();
    // Sort of works, but clicking an open menu makes it close and open again
    // $('.level-2 > li').not($(this).parent()).slideUp();
    $(this).next('ul').find('> li').slideToggle();
});
上面的代码非常适合打开和关闭菜单,但我似乎无法弄清楚如何在level-1打开新菜单并更改图标时正确关闭其他菜单。我已经为此苦苦挣扎了一段时间,感觉我错过了一些相当简单的东西。我想我的大脑现在只是炸了。
任何人都可以帮忙吗?如果我能澄清任何事情,请告诉我。http://jsfiddle.net/JqJce/1/