【发布时间】:2015-08-02 14:12:35
【问题描述】:
好吧,这可能很简单,但做不到……
我想做的是一个多级支持的子菜单
现在一步一步来:
用“ul”隐藏所有“li”
点击时将“Show-subnav”类添加到 li > ul 以显示子导航
问题:所有点击的li > ul都保持打开状态
如何关闭之前点击的子导航?
例如:当您单击 Item1 时,它会显示 Item1 > Level 1 子导航,但即使在单击 Item 2 子导航后仍保持打开状态。单击第 2 项时,第 1 项应关闭。
$(document).ready(function() {
// Toggle Sub Nav
$("#nav li:has(ul)").children("ul").hide(); // hide the li UL
$("#nav li:has(ul)").find("a").click(function() {
// Add .show-subnav class to revele on click
$(this).parent().find("ul:first").toggleClass("show-subnav");
// how to hide previously clicked submenus?
});
});
#nav .show-subnav {
display: block!important;
}
<!-- Nav primary start -->
<nav id="nav">
<ul>
<li><a href="#">Item 1 Submenu</a>
<ul>
<li><a href="#">Level 1 Submenu</a>
<ul>
<li><a href="#">Level 2 </a>
</li>
<li><a href="">Level 2 </a>
</li>
<li><a href="">Level 2</a>
</li>
<li><a href="">Level 2</a>
</li>
<li><a href="#">Level 2</a>
</li>
</ul>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
</ul>
</li>
<li><a href="#">Item 2 Submenu</a>
<ul>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
<li><a href="#">Level 1 </a>
</li>
</ul>
</li>
<li><a href="#section-3">Link 3</a>
</li>
<li><a href="#section-4">Link 4</a>
</li>
<li><a href="#section-5">Link 5</a>
</li>
</ul>
</nav>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【问题讨论】:
标签: jquery menu nav multi-level