【问题标题】:How to prevent scrolling when Mobile nav is toggled切换移动导航时如何防止滚动
【发布时间】:2017-12-16 19:40:42
【问题描述】:

我用 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】:

    在函数内部而不是外部使用 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

    【讨论】:

    • 我是 JS 新手,所以你能告诉我 ':visible' 和 $(window).on('scroll',noscroll); 到底是什么吗?与 window.addEventListener 属性有何不同?
    • @CristianMendoza 我更新了我的答案 .. 这都是关于纯 javascript 和 jquery .. 但是虽然我总是喜欢并建议不要将它们结合起来 .. 我已经只使用 jquery .. 对于确保无论同时使用它们,但只使用其中一个,在让其他人清楚之前让您的代码清晰可见
    • @CristianMendoza 我添加了对您可以检查的所有内容的引用。祝您有美好的一天:)
    猜你喜欢
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多