简体   繁体   English

带多级导航的toggleClass

[英]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代码中,使用siblingsnext查找与单击的父链接相关的子菜单:

$(".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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM