【发布时间】:2015-01-27 16:51:32
【问题描述】:
如何显示父菜单并显示所有子导航?
例如:
当我先单击并向下滑动这些子导航时 first-1 first-1-1 first-1-2 ......
一如既往,感谢您的帮助!
http://jsfiddle.net/MotoTony/kg8x2ntv/
HTML:
<nav id="nav">
<ul class="nav">
<li class="parent">
<a href="#">first</a>
<ul class="nav-child">
<li>
<a href="#">first-1</a>
<ul class="nav-child">
<li><a href="#">first-1-1</a></li>
<li><a href="#">first-1-2</a></li>
<li><a href="#">first-1-3</a></li>
</ul>
</li>
</ul>
</li>
<li class="parent">
<a href="#">2</a>
<ul class="nav-child">
<li>
<a href="#">first-1</a>
<ul class="nav-child">
<li><a href="#">2-1-1</a></li>
<li><a href="#">2-1-2</a></li>
<li><a href="#">2-1-3</a></li>
</ul>
</li>
</ul>
</li>
<li class="parent">
<a href="#">3</a>
<ul class="nav-child">
<li>
<a href="#">first-1</a>
<ul class="nav-child">
<li><a href="#">3-1-1</a></li>
<li><a href="#">3-1-2</a></li>
<li><a href="#">3-1-3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
jQuery:
function initMenu() {
jQuery('.nav-child').hide(); // Start with nav-childs hidden
jQuery('.nav > li.parent a').click(function() {
var checkElement = jQuery(this).next();
// When an `<a>` with a nav-child that isn't visible is clicked (tapped)...
if ((checkElement.is('.nav-child')) && (!checkElement.is(':visible'))) {
// Open the clicked (tapped) nav-child of `<a>`
jQuery(this).addClass("active");
checkElement.slideDown(165, 'linear');
// Go to the other `<a>` elements of that nav-child scope and close them
// (without closing nav-childs of other scopes, above or below)
jQuery(this).parent().siblings("li").children("a").removeClass("active");
jQuery(this).parent().siblings("li").children("a").next(".nav-child").slideUp(160, 'linear');
return false;
}
if(jQuery(this).hasClass("active")) {
jQuery(this).removeClass("active");
checkElement.slideUp(160, 'linear');
}
});
} // End initMenu()
initMenu();
我想先点击,然后 first-1 和孩子 first-1-1 first-1-2...同时显示,当我点击 first-1 或任何 subnav 不滑动时,只需点击首先它可以向上滑动所有子导航。然后,当我单击导航子之外的任何位置时,所有导航子都会向上滑动
【问题讨论】: