Reputation: 100
I have a dropdown menu using the hide and slidetoggle functions. I am having trouble however setting it up so that when one menu item is opened the current menu item closes. I have a JSFiddle to show where I am.
$('.menu-hide').hide();
$('.clickme').each(function() {
$(this).show(0).on('click', function(e) {
e.preventDefault();
$(this).next('.menu-hide').slideToggle('fast');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="fat_nav">
<ul class="nav-l1">
<li class="nav-l1-menuitem nav-l1-web_design">
<a class="nav-top clickme" href="#">Web Design <span class="submenu-icon"> </span></a>
<ul class="nav_drop menu-hide">
<li>
<a href="self-storage-websites.php"><span>Self Storage Websites</span></a>
</li>
<li>
<a href="responsive.php"><span>Responsive Design</span></a>
</li>
<!--<li>
<a href="optimization.php"><img class="hero_image" src="assets/images/opti.png" /><span>Website Optimization</span></a>
</li>-->
<li>
<a href="software-integration.php"><span>Software Integration</span></a>
</li>
</ul>
</li>
<li class="nav-l1-menuitem nav-l1-marketing">
<a class="nav-top clickme" href="#">Internet Marketing<span class="submenu-icon"> </span></a>
<ul class="nav_drop menu-hide">
<li>
<a href="seo.php"><span>Real SEO</span></a>
</li>
<li>
<a href="paid-search.php"><span>PPC (Pay Per Click) Ads</span></a>
</li>
<li>
<a href="social-media-marketing.php"><span>Social Media Marketing</span></a>
</li>
<!--<li>
<a href="#"><img class="hero_image" src="assets/images/rep.png" /><span>Reputation Mgmt.</span></a>
</li>-->
</ul>
</li>
<li class="nav-l1-menuitem nav-l1-about">
<a class="nav-top clickme" href="#">About Us<span class="submenu-icon"> </span></a>
<ul class="nav_drop menu-hide">
<li>
<a href="about.php"><span>About M4S</span></a>
</li>
<li>
<a href="careers.php"><span>Careers</span></a>
</li>
<li>
<a href="contact.php"><span>Contact Us</span></a>
</li>
</ul>
</li>
<li class="nav_button">
<a class="nav-top last-nav-link" href="request-a-quote.php">Free Quote</a>
</li>
</ul>
</div>
<!-- END OF FAT NAV -->
Any help would be appreciated.
Upvotes: 0
Views: 282
Reputation: 11102
No need to loop through the a tags, just add an event listener to them and once an a
tag is clicked then hide all the .menu_hide
is a smooth way and then show its children.
You can use css to hide the .menu-hide
initially better than waiting for the js to load.
$('.clickme').on('click', function(e) {
e.preventDefault();
if(!$(this).next('.menu-hide').is(':visible'))
{
$('.menu-hide').hide(500);
$(this).next('.menu-hide').slideToggle('fast');
}
});
.menu-hide
{
display:none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="fat_nav">
<ul class="nav-l1">
<li class="nav-l1-menuitem nav-l1-web_design">
<a class="nav-top clickme" href="#">Web Design <span class="submenu-icon"> </span></a>
<ul class="nav_drop menu-hide">
<li>
<a href="self-storage-websites.php"><span>Self Storage Websites</span></a>
</li>
<li>
<a href="responsive.php"><span>Responsive Design</span></a>
</li>
<!--<li>
<a href="optimization.php"><img class="hero_image" src="assets/images/opti.png" /><span>Website Optimization</span></a>
</li>-->
<li>
<a href="software-integration.php"><span>Software Integration</span></a>
</li>
</ul>
</li>
<li class="nav-l1-menuitem nav-l1-marketing">
<a class="nav-top clickme" href="#">Internet Marketing<span class="submenu-icon"> </span></a>
<ul class="nav_drop menu-hide">
<li>
<a href="seo.php"><span>Real SEO</span></a>
</li>
<li>
<a href="paid-search.php"><span>PPC (Pay Per Click) Ads</span></a>
</li>
<li>
<a href="social-media-marketing.php"><span>Social Media Marketing</span></a>
</li>
<!--<li>
<a href="#"><img class="hero_image" src="assets/images/rep.png" /><span>Reputation Mgmt.</span></a>
</li>-->
</ul>
</li>
<li class="nav-l1-menuitem nav-l1-about">
<a class="nav-top clickme" href="#">About Us<span class="submenu-icon"> </span></a>
<ul class="nav_drop menu-hide">
<li>
<a href="about.php"><span>About M4S</span></a>
</li>
<li>
<a href="careers.php"><span>Careers</span></a>
</li>
<li>
<a href="contact.php"><span>Contact Us</span></a>
</li>
</ul>
</li>
<li class="nav_button">
<a class="nav-top last-nav-link" href="request-a-quote.php">Free Quote</a>
</li>
</ul>
</div>
<!-- END OF FAT NAV -->
Upvotes: 1