简体   繁体   English

移动菜单仅在第二次单击时打开,并在我滚动时关闭

[英]Mobile menu only opens on second click and closes when i scroll

I made this simple responsive menu with a submenu. 我用子菜单做了这个简单的响应式菜单。 but when on mobile and i click the "trigger" it does not open first time, i have to click it again. 但是当在移动设备上并且我单击“触发器”时,它不会第一次打开,我必须再次单击它。 then when i want to scroll down through the menu it closes. 然后,当我想向下滚动菜单时,它关闭。

the HTML:` HTML:

    <a href="" class="mobile-trigger">Nav Trigger<span aria-hidden="true"></span></a>

    <div class="nav-main__inner">
    <nav class="nav-main__top cf">
      <ul class="nav-main__left">
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--bold" href="">Link</a></li>
      </ul>
      <ul class="nav-main__right">
        <li class="nav-main__item"><a class="item__link item__link--medium" href="">Link</a></li>
        <li class="nav-main__item"><a class="item__link item__link--medium" href="">Link</a></li>
        <li class="nav-main__item has-submenu"><a class="item__link item__link--medium" href="">Link</a>
          <ul class="submenu">
            <li class="submenu__item"><a href="" class="submenu__link">Link sub</a></li>
            <li class="submenu__item"><a href="" class="submenu__link">Link sub</a></li>
            <li class="submenu__item"><a href="" class="submenu__link">Link sub</a></li>
            <li class="submenu__item"><a href="" class="submenu__link">Link sub</a></li>
            <li class="submenu__item"><a href="" class="submenu__link">Link sub</a></li>
            <li class="submenu__item"><a href="" class="submenu__link">Link sub</a></li>
          </ul>
        </li>
      </ul>

  </nav>`

THE Javascript: Javascript:

 $(document).ready(function(){

var trigger  = $('.mobile-trigger');
var subm     = $('.submenu');
var navInner = $('.nav-main__inner');

function mmenu(){
 var wi = $(window).width();

 if(wi < 992) {

  trigger.on('click', function(e){
    e.preventDefault();
    trigger.toggleClass('nav-open');
    navInner.toggleClass('show');

    if (subm.hasClass('show')) {
      subm.removeClass('show');
    }
  });

  $('.has-submenu > a').on('click', function(e){
    e.preventDefault();
    subm.toggleClass('show');
  });

}

$(window).resize(function(){
    navInner.removeClass('show');
    trigger.removeClass('nav-open');
});

}

mmenu();


});`

The window.resize event is part of the page load process. window.resize事件是页面加载过程的一部分。 It will fire in addition to your document.ready JQuery function. 它会在您的document.ready JQuery函数之外触发。 So, this code will run when the page first loads: 因此,此代码将在页面首次加载时运行:

navInner.removeClass('show');
trigger.removeClass('nav-open');

If you want to show/hide certain page elements based on viewport size or device orientation, use CSS Media Queries . 如果要基于视口大小或设备方向显示/隐藏某些页面元素,请使用CSS Media Queries

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

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