时间:2016-05-08 20:20:51

标签: jquery scroll

我的网站有一个介绍div占据整个视口,其下方有一个导航菜单。

我试图创建一个功能,一旦滚动它就会隐藏此介绍div。我还需要一个函数来将浏览器滚动到顶部,因为这个div被隐藏了。

我已经创造了这样一个功能,但却产生了一个问题:

强制滚动到顶部的函数部分保持触发,不会让你滚动经过div我用作锚点。我尝试了一些不同的解决方案,让每个会话只启动一次,但我无法工作。

我问的是,我怎么能只做一次火?或者我应该尝试不同的方法? .postfold_container_01是我试图隐藏的.prefold_wrapper div下的导航菜单容器。

$(window).scroll(function() {    
    var scroll = $(window).scrollTop();    
    if (scroll >= $(".postfold_container_01").offset().top) {
        $(".prefold_wrapper").addClass("hide");
        window.scrollTo(0, 0);
    } else {

    }
});

2 个答案:

答案 0 :(得分:1)

你可以尝试使用外壳为你的功能提供一个布尔"完成" value,然后在if语句中使用它。像这样:

  var hideAndScrollOnce = (function () {
    var done = false;
    return function () {
      var scroll = $(window).scrollTop();
      if (scroll >= $(".postfold_container_01").offset().top && !done) {
          $(".prefold_wrapper").addClass("hide");
          window.scrollTo(0, 0);
          done = true;
      }
    }  
  })();
  $(window).scroll(hideAndScrollOnce);

答案 1 :(得分:0)

您可以尝试简单地将条件更改为:if (scroll >= $(".postfold_container_01").offset().top && !$(".prefold_wrapper").hasClass("hide")) {