Jquery 显示父级的所有子导航
Jquery display all subnav of parent
我如何显示父菜单并显示所有子导航?
例如:
当我先点击并滑下那些子导航 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 和 children first-1-1 first-1-2...同时显示,当我点击 first-1 或任何子导航时不要向上滑动,只需先单击它就可以全部向上滑动 subnav.then,当我单击 nav-child 之外的任何地方时,所有 nav-child 都会向上滑动
尝试做类似
的事情
function initMenu() {
jQuery('.nav-child').hide(); // Start with nav-childs hidden
jQuery('.nav > li.parent a').click(function() {
var checkElement = jQuery(this).next();
var $uls = $(this).next().find('.nav-child').addBack().slideToggle(160, 'linear');
$uls.prev('a').toggleClass('active');
$(this).parent().siblings().find('.nav-child').slideUp(160, 'linear').prev().removeClass('active')
});
} // End initMenu()
initMenu();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<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="#">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>
</ul>
</nav>
我如何显示父菜单并显示所有子导航?
例如:
当我先点击并滑下那些子导航 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 和 children first-1-1 first-1-2...同时显示,当我点击 first-1 或任何子导航时不要向上滑动,只需先单击它就可以全部向上滑动 subnav.then,当我单击 nav-child 之外的任何地方时,所有 nav-child 都会向上滑动
尝试做类似
的事情function initMenu() {
jQuery('.nav-child').hide(); // Start with nav-childs hidden
jQuery('.nav > li.parent a').click(function() {
var checkElement = jQuery(this).next();
var $uls = $(this).next().find('.nav-child').addBack().slideToggle(160, 'linear');
$uls.prev('a').toggleClass('active');
$(this).parent().siblings().find('.nav-child').slideUp(160, 'linear').prev().removeClass('active')
});
} // End initMenu()
initMenu();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<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="#">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>
</ul>
</nav>