JSFiddle - React, Tailwind, and code Playground
HTML
<a href="#mainMenu" class="menuLink">Main</a>
<div id="mainMenu" class="menu">
<ul>
<li class="menuItem"><a href="#">item 1</a>
</li>
<li class="menuItem"><a href="#">item 2</a>
</li>
<li class="menuItem"><a href="#">item 3</a>
</li>
<li class="menuItem"><a href="#">item 4</a>
</li>
<li class="menuItem"><a href="#">item 5</a>
</li>
</ul>
</div> <a href="#menuTwo" class="menuLink">Menu 2</a>
<div id="menuTwo" class="menu">
<ul>
<li class="menuItem"><a href="#">item 1</a>
</li>
<li class="menuItem"><a href="#">item 2</a>
</li>
<li class="menuItem"><a href="#">item 3</a>
</li>
<li class="menuItem"><a href="#">item 4</a>
</li>
<li class="menuItem"><a href="#">item 5</a>
</li>
</ul>
</div>
CSS
#mainMenu {
background-color: lightblue;
}
#menuTwo {
background-color: lightgreen;
}
.menu {
display: none;
border: 1px solid black;
}
JavaScript
$(document).ready(function () {
//Attach a handler to the document for clicks.
$(document).on("click", function (e) {
//Get the click's target and convert to $ object.
$target = $(e.target);
//Find out if the click occurred on a menu.
$parents = $target.closest(".menu");
if ($parents.length > 0) {
console.log(["Menu click", e]);
return;
} else {
//If it wasn't on a menu close the open menu.
console.log(["Non-menu click", e]);
$('.menu').hide();
}
});
//Handle showing the menu.
$('.menuLink').on("click", function (e) {
//Close all other menus.
$('.menu').hide();
console.log("Started");
e.stopPropagation();
e.preventDefault();
var targetMenu = $(e.target).attr("href");
$(targetMenu).show();
});
});