如何在切换移动导航时阻止滚动

问题描述 投票:0回答:1

我用HTML CSS和BS3制作的网站的移动导航是非常基本的。但我想在切换汉堡包按钮时禁用身体其他部分的滚动。

我的问题是,当它打开时,你不能滚动,这是我想要的。但是,当您关闭菜单时,它不起作用。

继承了一些HTML:

  <!--        mobile nav links-->
              <div class="mob-div-nav">
                <div class="row">
                  <div class="col-xs-12" style="height:100%;">

                  </div>
                </div>
              </div>
      <!--        END Mobile Nav-->

这是Js:

  $("#hamburger").on("click", function (event){

  $(".mob-div-nav").slideToggle(500);

  function noscroll() {
  window.scrollTo( 0, 0 );
}
  // add listener to disable scroll

  if ($(".mob-div-nav").css("display") == "block"){

    window.addEventListener('scroll', noscroll);

    } else if ($(".mob-div-nav").css("display") == "none") {

      window.removeEventListener('scroll', noscroll);

    }
});
javascript jquery html css mobile
1个回答
0
投票

使用函数内部的if语句不在外面..你的代码应该是这样的

$(document).ready(function(){
  // #hamburger click event
  $("#hamburger").on("click", function (event){
    $(".mob-div-nav").slideToggle(500);
  }); // End of #hamburger click event
  // window scroll event
  $(window).on('scroll' , noscroll);
});

// functions here
// noscroll function
function noscroll() {
  if ($(".mob-div-nav").is(':visible')){
    window.scrollTo( 0, 0 );
  }
}

说明:

  • $(document).ready(function(){ - 当文件准备好时read Here
  • window.addEventListener是一个纯粹的javascript和$(window).on('scroll'是一个jquery .. jQuery .on(); vs JavaScript .addEventListener();
  • .is(':visible')是一个jquery函数检查元素是否可见,:hidden如果元素被隐藏,:checked如果被检查等等..你可以读到关于.is() here
© www.soinside.com 2019 - 2024. All rights reserved.