[英]toggleClass with multi-level navigation
Right now, I'm trying to manipulate a menu just like Microsoft.com . 现在,我正在尝试像Microsoft.com一样操作菜单。 I'm having an issue with being able to toggle the hidden unordered list in my links. 我在切换链接中隐藏的无序列表时遇到问题。 I'll make a local fiddle in case you want to observe here 如果您要在这里观察,我会做一个本地提琴
This is the HTML Markup : 这是HTML标记:
<nav class="multi-menu">
<ul>
<li>
<a href="#">Link</a>
<div class="sub-menu">
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</nav>
This is the CSS Markup : 这是CSS标记:
.multi-menu, .sub-menu {
background: #34495e;
}
.multi-menu li {
display: inline-block;
}
.multi-menu li a {
display: block;
padding: 20px 30px;
color: white;
text-decoration: none;
}
.sub-menu {
position: absolute;
display: inline-block;
width: 100%;
}
.sub-menu ul li {
display: block;
float: left;
width: 20%;
}
Here is the JQuery Markup 这是JQuery标记
$(document).ready(function(){
$(".multi-menu li a").each(function() {
if ($(this).next().length > 0) {
$(this).addClass("parent");
};
})
var menu = $(".multi-menu li a.parent");
$(".parent").click(function (e){
e.preventDefault();
$(this).parent(".sub-menu ul").toggleClass('open');
});
});
First of all you can remove the div
and add the sub-menu
class directly to the ul
element: 首先,您可以删除div
并将sub-menu
类直接添加到ul
元素中:
<li>
<a href="#">Link</a>
<ul class="sub-menu">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
Then in the jQuery code, use siblings
or next
to find the submenu related to the parent link clicked: 然后在jQuery代码中,使用siblings
或next
查找与单击的父链接相关的子菜单:
$(".parent").on("click", function (e){
e.preventDefault();
$(this).siblings(".sub-menu").toggleClass('open');
});
For animated visibility effects, you can use various jQuery methods, for example: 对于动画可见性效果,可以使用各种jQuery方法,例如:
$(this).siblings(".sub-menu").slideToggle();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.