简体   繁体   English

如何在单击其中一个时关闭下拉 div<li> 在它里面还是在div外面?

[英]How to close a dropDown div on clicking on one of the <li> inside it or outside the div?

I have a burger icon that show on small screens, on clicking on it a div is shown beneath the navigation menu containing some <li> elements that are used for navigation among pages .我有一个显示在小屏幕上的汉堡图标,单击它时,导航菜单下方会显示一个 div,其中包含一些用于在页面之间导航的<li>元素。

<div class='tabs'>
    <ul class="navs">
        <li class="active"><a href="#" >Home</a></li>
        <li><a href="#" >Organizations</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Register</a></li>
        <li><a href="#">Contact</a></li>
        <li><input type="text" class="search-input"><button type="submit" class="search-button"><img src=""/></button></li>
    </ul> 
</div>

The burger icon :汉堡图标:

<label for="toggle">&#9776;</label>
<input type="checkbox" id="toggle"></input>

When I click the burger icon the dropdown menu appears and if I click on one of the <li> , active class is added to this <li>当我单击汉堡图标时,会出现下拉菜单,如果我单击<li> ,则active类将添加到此<li>

I want to close this dropdown after clicking on one of the <li> or click outside the tabs div using Javascript .我想在单击<li>或使用 Javascript 在tabs div 外单击后关闭此下拉列表。

I'm not using Bootstrap or Jquery.我没有使用 Bootstrap 或 Jquery。

Two solutions here, if you add jQuery or if you want raw JavaScript:这里有两个解决方案,如果您添加 jQuery 或想要原始 JavaScript:

// jQuery version
let toggle = $('#toggle');
let menu = $('.navs');

toggle.click(() => {
  menu.toggleClass('active');
});


// non-jQuery / raw JavaScript 
let toggle = document.getElementById('toggle');
let menu = document.getElementsByClassName('navs');

toggle.addEventListener('mouseup', () => {
  menu.classList.toggle('active');
});

You may have to tweak a little bit to your page.您可能需要稍微调整一下您的页面。 element.classList is standard now, that said some older browsers may not support it. element.classList现在是标准的,也就是说一些旧的浏览器可能不支持它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM