Reputation: 3614
I just created menu and some of the items have sub items as you can see on my html structure:
<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.
.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:
$('.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');
}
});
Upvotes: 1
Views: 4418
Reputation: 7025
You can do it CSS :hover
itself. but as you wanted in jquery
here is the solution
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){
$('.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>
Upvotes: 0
Reputation: 8407
try this demo ,only use css, check the dropdown, this only for your information
#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>
Upvotes: 2