2017-05-26 122 views
1

我有一个简单的javascript函数来检测页面滚动。刷新页面的更新功能

一切正常。

唯一的遗漏是,当页面刷新时,不保留滚动,因此需要恢复。

我认为这可能是一件简单的事情,就像用$(window).on("load", docScroll()); in setBindings之类的东西替换docScroll() in pub.init的直接调用,但不幸的是这不起作用。

有人提供建议吗?

var scroll = function() { 
    var pub = {}, timeout = null; 

    function reset() { 
     if (typeof (timeout)) 
      clearTimeout(timeout); 

     timeout = setTimeout(function() { 
      docScoll(); 
     }, 200); 
    } 

    function docScroll() { 
     $body = $("body"); 
     var headerHeight = $("#header").height(); 

     $(document).scroll(function() { 
      if ($(window).scrollTop() > headerHeight) { 
       $body.addClass("scrolling"); 
      } 
      else { 
       $body.removeClass("scrolling"); 
      } 
     }); 
    } 

    function setBindings() { 
     $(window).on("resize", reset); 
    } 

    pub.init = function() { 
     setBindings(); 
     docScroll(); 
    } 

    return pub; 
}(); 
+0

你什么时候调用init()? –

+0

init在文件内部调用.Ready –

+0

为什么这不够用? –

回答

0

滚动事件处理程序应该设置一次。所以我会这样做:

var scroll = function() { 
    var pub = {}; 

    function docScroll() { 
     var $body = $("body"); 
     var headerHeight = $("#header").height(); 

     if ($(window).scrollTop() > headerHeight) { 
      $body.addClass("scrolling"); 
     } 
     else { 
      $body.removeClass("scrolling"); 
     } 
    } 

    function setBindings() { 
     $(document).scroll(docScroll); 
    } 

    pub.init = function() { 
     setBindings(); 
     docScroll(); 
    } 

    return pub; 
}(); 
+0

进行测试,并且工作时没有复杂性,如果存储变量。为了完整性,我添加了resize事件 - 调用docScroll()。标题在方向上更改大小。感谢您的帮助。 –