简体   繁体   English

如何将类添加到具有子项的菜单项

[英]How to add a class to a menu item that has children

I just created menu and some of the items have sub items as you can see on my html structure: 我刚刚创建了菜单,其中一些项包含子项,如您在html结构上所见:

<nav id="site-navigation" class="main-navigation" role="navigation">
  <div class="menu-menu-1-container">
    <ul id="primary-menu" class="menu">
      <li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-4 current_page_item menu-item-41">
        <a href="http://powersol.burnnotice.co.za/">Home</a>
      </li>
      <li id="menu-item-42" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-42">
        <a href="http://powersol.burnnotice.co.za/our-dealers/">Our Dealers</a>
        <ul class="sub-menu">
          <li id="menu-item-250" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-250">
            <a href="http://powersol.burnnotice.co.za/dealer-1/">Dealer 1</a>
          </li>
          <li id="menu-item-246" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-246">
            <a href="http://powersol.burnnotice.co.za/dealer-2/">Dealer 2</a>
          </li>
          <li id="menu-item-245" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-245">
            <a href="http://powersol.burnnotice.co.za/dealer-3/">Dealer 3</a>
          </li>
          <li id="menu-item-249" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-249">
            <a href="http://powersol.burnnotice.co.za/dealer-4/">Dealer 4</a>
          </li>
        </ul>
      </li>
      <li id="menu-item-39" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-39">
        <a href="http://powersol.burnnotice.co.za/companies/">Companies</a>
        <ul class="sub-menu">
          <li id="menu-item-247" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-247">
            <a href="http://powersol.burnnotice.co.za/companies-1/">Companies 1</a>
          </li>
          <li id="menu-item-253" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-253">
            <a href="http://powersol.burnnotice.co.za/companies-3/">Companies 3</a>
          </li>
          <li id="menu-item-248" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-248">
            <a href="http://powersol.burnnotice.co.za/companies-4/">Companies 4</a>
          </li>
        </ul>
      </li>
      <li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40">
        <a href="http://powersol.burnnotice.co.za/contact/">Contact</a>
      </li>
    </ul>
  </div>        
</nav>

For the css, I first put a display none cause initially the sub-menus cannot be visible. 对于CSS,我首先没有显示任何内容,因为最初子菜单不可见。

.main-navigation ul li{
    display: none;
}

Now, How can I add a class dropdown-menu to a menu item that has sub-items everytime I hover over that particular item? 现在,每次将鼠标悬停在具有特定子项目的菜单项上时,如何将其添加到该菜单项中?

Here my js but it does nothing when I hover over the item: 这是我的js,但是当我将鼠标悬停在该项目上时它什么也没做

$('.main-navigation ul > li.menu-item-has-children').on("hover" function(){
    $('.main-navigation ul > li.menu-item-has-children').removeClass('dropdown-menu');
    if($(this).hasClass('dropdown-menu')){
        $(this).addClass('dropdown-menu');
    }else{
        $(this).addClass('dropdown-menu');
    }
});

Here my pen if needed 这是我的笔(如果需要)

try this demo ,only use css, check the dropdown, this only for your information 试试这个演示,只使用css,检查下拉菜单,这仅供参考

 #primary-menu > li { display:inline-block; position:relative; margin:15px; } #primary-menu > li ul { position:absolute; left:0; padding:0; display:none; } #primary-menu > li ul li { white-space:nowrap; } #primary-menu > li:hover ul { display:block; } 
 <nav id="site-navigation" class="main-navigation" role="navigation"> <div class="menu-menu-1-container"> <ul id="primary-menu" class="menu"> <li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-4 current_page_item menu-item-41"> <a href="http://powersol.burnnotice.co.za/">Home</a> </li> <li id="menu-item-42" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-42"> <a href="http://powersol.burnnotice.co.za/our-dealers/">Our Dealers</a> <ul class="sub-menu"> <li id="menu-item-250" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-250"> <a href="http://powersol.burnnotice.co.za/dealer-1/">Dealer 1</a> </li> <li id="menu-item-246" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-246"> <a href="http://powersol.burnnotice.co.za/dealer-2/">Dealer 2</a> </li> <li id="menu-item-245" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-245"> <a href="http://powersol.burnnotice.co.za/dealer-3/">Dealer 3</a> </li> <li id="menu-item-249" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-249"> <a href="http://powersol.burnnotice.co.za/dealer-4/">Dealer 4</a> </li> </ul> </li> <li id="menu-item-39" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-39"> <a href="http://powersol.burnnotice.co.za/companies/">Companies</a> <ul class="sub-menu"> <li id="menu-item-247" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-247"> <a href="http://powersol.burnnotice.co.za/companies-1/">Companies 1</a> </li> <li id="menu-item-253" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-253"> <a href="http://powersol.burnnotice.co.za/companies-3/">Companies 3</a> </li> <li id="menu-item-248" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-248"> <a href="http://powersol.burnnotice.co.za/companies-4/">Companies 4</a> </li> </ul> </li> <li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40"> <a href="http://powersol.burnnotice.co.za/contact/">Contact</a> </li> </ul> </div> </nav> 

You can do it CSS :hover itself. 您可以做到CSS :hover本身。 but as you wanted in jquery here is the solution 但是,正如您在jquery想要的,这是解决方案

Use $('.main-navigation ul > li.menu-item-has-children').on("mouseenter mouseleave", function(e){ . mouseenter mouseleave in place of hover 使用$('.main-navigation ul > li.menu-item-has-children').on("mouseenter mouseleave", function(e){mouseenter mouseleave代替hover

 $('.main-navigation ul > li.menu-item-has-children').on("mouseenter mouseleave", function(e){ $('.main-navigation ul > li.menu-item-has-children').removeClass('dropdown-menu'); if(e.type=='mouseenter') $(this).addClass('dropdown-menu'); }); 
 .main-navigation ul ul{ display: none; } .main-navigation ul li.dropdown-menu ul{ display: block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <nav id="site-navigation" class="main-navigation" role="navigation"> <div class="menu-menu-1-container"> <ul id="primary-menu" class="menu"> <li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-4 current_page_item menu-item-41"> <a href="http://powersol.burnnotice.co.za/">Home</a> </li> <li id="menu-item-42" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-42"> <a href="http://powersol.burnnotice.co.za/our-dealers/">Our Dealers</a> <ul class="sub-menu"> <li id="menu-item-250" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-250"> <a href="http://powersol.burnnotice.co.za/dealer-1/">Dealer 1</a> </li> <li id="menu-item-246" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-246"> <a href="http://powersol.burnnotice.co.za/dealer-2/">Dealer 2</a> </li> <li id="menu-item-245" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-245"> <a href="http://powersol.burnnotice.co.za/dealer-3/">Dealer 3</a> </li> <li id="menu-item-249" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-249"> <a href="http://powersol.burnnotice.co.za/dealer-4/">Dealer 4</a> </li> </ul> </li> <li id="menu-item-39" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-39"> <a href="http://powersol.burnnotice.co.za/companies/">Companies</a> <ul class="sub-menu"> <li id="menu-item-247" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-247"> <a href="http://powersol.burnnotice.co.za/companies-1/">Companies 1</a> </li> <li id="menu-item-253" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-253"> <a href="http://powersol.burnnotice.co.za/companies-3/">Companies 3</a> </li> <li id="menu-item-248" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-248"> <a href="http://powersol.burnnotice.co.za/companies-4/">Companies 4</a> </li> </ul> </li> <li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40"> <a href="http://powersol.burnnotice.co.za/contact/">Contact</a> </li> </ul> </div> </nav> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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