I created a More button with dropdown options. The issue is this that the dropdown options are not working when I am using the same code multiple times. It's working only for the first more button. How do I use a single code with same classes with multiple times?
var el = document.querySelector('.more');
var btn = el.querySelector('.more-btn');
var menu = el.querySelector('.more-menu');
var visible = false;
function showMenu(e) {
e.preventDefault();
if (!visible) {
visible = true;
el.classList.add('show-more-menu');
menu.setAttribute('aria-hidden', false);
document.addEventListener('mousedown', hideMenu, false);
}
}
function hideMenu(e) {
if (btn.contains(e.target)) {
return;
}
if (visible) {
visible = false;
el.classList.remove('show-more-menu');
menu.setAttribute('aria-hidden', true);
document.removeEventListener('mousedown', hideMenu);
}
}
btn.addEventListener('click', showMenu, false);
.more_options{position:relative}.more-btn,.more-menu-btn{background:none;border:0 none;line-height:normal;overflow:visible;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100%;text-align:left;outline:none;cursor:pointer}.more-dot{background-color:#aab8c2;margin:0 auto;display:inline-block;width:7px;height:7px;margin-right:1px;border-radius:50%;transition:background-color 0.3s}.more-menu{position:absolute;top:100%;right:0;z-index:900;padding:10px 0;margin-top:9px;background-color:#fff;border:1px solid #ccd8e0;border-radius:4px;box-shadow:1px 1px 3px rgba(0,0,0,0.25);opacity:0;transform:translate(0, 15px) scale(.95);transition:transform 0.1s ease-out, opacity 0.1s ease-out;pointer-events:none}.more-menu-caret-outer,.more-menu-caret-inner{position:absolute;display:inline-block;margin-left:-1px;font-size:0;line-height:1}.more-menu-caret-outer{border-bottom:10px solid #c1d0da;border-left:10px solid transparent;border-right:10px solid transparent;height:auto;left:0;top:0;width:auto}.more-menu-caret-inner{top:1px;left:1px;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid #fff}.more-menu-items{margin:0;list-style:none;padding:0}.more-menu-item{display:block}.more-menu-btn{min-width:100%;color:#66757f;cursor:pointer;display:block;font-size:13px;line-height:18px;padding:5px 20px;position:relative;white-space:nowrap}.more-menu-item:hover{background-color:#63734f }.more-menu-item:hover .more-menu-btn{color:#fff}.more-btn:hover .more-dot, .show-more-menu .more-dot{background-color:#516471}.show-more-menu .more-menu{opacity:1;transform:translate(0, 0) scale(1);pointer-events:auto}
<div class="more more_options">
<div class="more-btn">
<span class="more-dot"></span>
<span class="more-dot"></span>
<span class="more-dot"></span>
</div>
<div class="more-menu">
<div class="more-menu-caret">
<div class="more-menu-caret-outer"></div>
<div class="more-menu-caret-inner"></div>
</div>
<ul class="more-menu-items" tabindex="-1" role="menu" aria-labelledby="more-btn" aria-hidden="true">
<li class="more-menu-item" role="presentation">
<button type="button" class="more-menu-btn" role="menuitem">Report</button>
</li>
<li class="more-menu-item" role="presentation">
<button type="button" class="more-menu-btn" role="menuitem">Download</button>
</li>
<li class="more-menu-item" role="presentation">
<button type="button" class="more-menu-btn" role="menuitem">See All</button>
</li>
</ul>
</div>
</div>
<!--more options button two begin-->