简体   繁体   English

关闭菜单图标和外部的汉堡菜单

[英]Closing hamburger menu on menu icon and outside

How can I close the hamburger menu on outside if it's been clicked on overlay. 如果在叠加层上单击,如何关闭外部的汉堡菜单。 I'm still new to js and here's my code. 我对JS还是很陌生,这是我的代码。 Right now its just working when closing the hamburger icon. 现在,它仅在关闭汉堡图标时起作用。 I'm practicing but I can't seem to make it work. 我正在练习,但似乎无法正常工作。

$(document).ready(function () {
    var trigger = $('.hamburger'),
        overlay = $('.overlay'),
        isClosed = false;

    trigger.click(function () {
        hamburger_cross();

    });

    function hamburger_cross() {

        if (isClosed == true) {          
            overlay.hide();
            trigger.removeClass('is-open');
            trigger.addClass('is-closed');
            isClosed = false;
        } else {   
            overlay.show();
            trigger.removeClass('is-closed');
            trigger.addClass('is-open');
            isClosed = true;
        }
    }

    $('[data-toggle="offcanvas"]').click(function () {
        $('#wrapper').toggleClass('toggled');
    });  
}); 

Add an event listener to the whole document to close the menu if it's open. 将事件侦听器添加到整个文档以关闭菜单(如果打开的话)。

document.body.addEventListener('click', (e) => {
  if (!isClosed || e.target.matches('.hamburger, .hamburger *')) return;

  // better to put this in its own function for DRY code
  overlay.hide();
  trigger.removeClass('is-open');
  trigger.addClass('is-closed');
  isClosed = false;
});

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

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