JSFiddle - React, Tailwind, and code Playground

HTML

<div class="container">
  <a href="#" class="toggle">Open sesame</a>
  <ul class="menu" tabindex="0">
    <li><a href="#">Some option</a></li>
    <li><a href="#">Option with longer text</a></li>
  </ul>
</div>
<div class="container">
  <a href="#" class="toggle">Open sesame</a>
  <ul class="menu" tabindex="0">
    <li><a href="#">Some option</a></li>
    <li><a href="#">Option with longer text</a></li>
  </ul>
</div>
<div class="container">
  <a href="#" class="toggle">Open sesame</a>
  <ul class="menu" tabindex="0">
    <li><a href="#">Some option</a></li>
    <li><a href="#">Option with longer text</a></li>
  </ul>
</div>
<div id="console"></div>

CSS

body { font: 10pt/125% Sans-Serif; padding: 1em; }
a { text-decoration: none; color: #00c; }
#console { float:right; font-size: 8pt; line-height: 1em; }
.container {
  float: left;
  margin-right: 5px;
}
.toggle {
  display: block;
  line-height: 25px;
  border: 1px solid #ccc;
  outline: none;
  padding: .25em 1em;
  background: #eee;
  border-radius: 5px;
}
.toggle:hover {
  background: #ddd;
}
.toggle:after {
  content: "";
  display: inline-block;
  margin: 0 -3px 2px 5px;
  border-width: 5px 5px 0 5px;
  border-style: solid;
  border-color: #999 transparent;
}
.menu {
  display: none;
  position: absolute;
  background: #eee;
  margin: 1px 0 0;
  border: 1px solid #ccc;
  outline: 0 none;
  padding: 3px 0;
  border-radius: 5px;
  list-style: none;
  box-shadow: 0px 1px 5px #ddd;
}
.menu li a {
  padding: .5em 1em;
  display: block;
}
.menu li a:hover {
  background: #ddd;
}
.open .menu {
  display: block;
}
.open .toggle:after {
  border-width: 0 5px 5px 5px;
}

JavaScript

var con = $("#console");
var log = function(text) {
  con.append("<div>" + text + "</div>");
}

$(".menu li *").click(function(evt) {
  evt.preventDefault();
  log("menu click");
});

$(".toggle").mousedown(function(evt){
  evt.preventDefault();
  log("toggle menu")
  var c = $(this).closest(".container").toggleClass("open");
  c.hasClass("open") && c.find(".menu")[0].focus();
});

$(".menu").focusout(function(evt){
  evt.stopPropagation();
  log("focus out");
  $(this).closest(".container").removeClass("open");
}).focusin(function(evt) {
  evt.stopPropagation();
  log("focus in");
});