单击某个项目后如何关闭汉堡菜单?

单击汉堡包按钮后无法关闭菜单。单击任何项目后关闭整个菜单屏幕的最佳方法是什么?


我的 HTML 是:


`<body>

  <div class="menu-wrap">

    <input type="checkbox" class="toggler">

    <div class="hamburger">

      <div></div>

    </div>

    <div class="menu">>

      <div>

        <div>

          <ul>

            <li><a href="#Home">Home</a></li>

            <li><a href="#About">About</a></li>

            <li><a href="#">Menu</a></li>

            <li><a href="#">Contact</a></li>

          </ul>

        </div>

      </div>

    </div>

  </div>`

我尝试过使用 jQuery 但没有成功。这是js代码:


`$('.toggler').on('click', function () {

    $('.menu').toggleClass('open');

});

$('.menu li').on("click", function () {

    $('.menu-wrap').toggleClass('open');

});`

或者是否有更简单的方法使用 CSS 来关闭菜单?


这是要运行的代码笔:https://jsfiddle.net/7rmcx861/#&togetherjs=g5zDdkhjc5


哔哔one
浏览 57回答 2
2回答

ibeautiful

https://jsfiddle.net/h7et0qnv/此菜单样式适用于输入复选框的情况。如果选中,您的汉堡菜单将可见,否则将隐藏。所以只需要改变它的情况在你的脚本中写了一个函数。function toggle(){&nbsp; &nbsp; $(".toggler").prop("checked", false);}然后将此函数放入菜单列表的onclick事件中<li><a onclick="toggle()" href="#Home">Home</a></li>&nbsp;<li><a onclick="toggle()" href="#About">About</a></li>&nbsp;<li><a onclick="toggle()" href="#">Menu</a></li>&nbsp;<li><a onclick="toggle()" href="#">Contact</a></li>

Smart猫小萌

如果你想用 vanilla js 来做,我建议你使用 CustomEvents。在 React 等框架中可能还有其他方法可以做到这一点。对于每个菜单项,我都会发出一个自定义事件 -var menuItems = document.querySelectorAll('.menu li');for (var i = 0; i < menuItems.length; ++i) {&nbsp; menuItems[i].addEventListener('click', function(e) {&nbsp; &nbsp; var closeEvent = new CustomEvent('closeMenu', {&nbsp; &nbsp; &nbsp; bubbles: true,&nbsp; &nbsp; });&nbsp; &nbsp; e.currentTarget.dispatchEvent(closeEvent);&nbsp; });}然后,“菜单”可以对此自定义事件做出反应,并在打开时自行关闭 -var menu = document.querySelector('.menu')if (menu) {&nbsp; menu.addEventListener('closeMenu', function (e) {&nbsp; &nbsp; e.currentTarget.classList.remove('open');&nbsp; });}您可以使用常用的菜单“切换器”来在单击时打开和关闭菜单。更新:我觉得事情还不是很清楚。所以我在这里添加一些示例代码。注意:我添加了切换器,随后稍微更改了菜单事件处理程序。var menuItems = document.querySelectorAll('.menu li');for (var i = 0; i < menuItems.length; ++i) {&nbsp; menuItems[i].addEventListener('click', function(e) {&nbsp; &nbsp; var closeEvent = new CustomEvent('closeMenu', {&nbsp; &nbsp; &nbsp; bubbles: true,&nbsp; &nbsp; });&nbsp; &nbsp; e.currentTarget.dispatchEvent(closeEvent);&nbsp; });}var menu = document.querySelector('.menu')var toggler = document.querySelector('.toggler')if (menu && toggler) {&nbsp; menu.addEventListener('closeMenu', function(e) {&nbsp; &nbsp; menu.classList.remove('open');&nbsp; &nbsp; toggler.checked = false;&nbsp; });&nbsp; toggler.addEventListener('click', function(e) {&nbsp; &nbsp; menu.classList.toggle('open');&nbsp; });}.menu {&nbsp; background-color: white;&nbsp; display: inline-block;&nbsp; padding-right: 1rem;}.menu.open {&nbsp; visibility: visible;}.menu {&nbsp; visibility: hidden;}<div class="menu-wrap">&nbsp; <input type="checkbox" class="toggler" checked>&nbsp; <div class="hamburger">&nbsp; &nbsp; <div></div>&nbsp; </div>&nbsp; <div class="menu open">&nbsp; &nbsp; <div>&nbsp; &nbsp; &nbsp; <div>&nbsp; &nbsp; &nbsp; &nbsp; <ul>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <li><a href="#Home">Home</a></li>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <li><a href="#About">About</a></li>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <li><a href="#">Menu</a></li>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <li><a href="#">Contact</a></li>&nbsp; &nbsp; &nbsp; &nbsp; </ul>&nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; </div>&nbsp; </div></div>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5