我有一个简单的javascript函数可以检测页面滚动。
一切正常。
唯一的遗漏是,当页面刷新时,滚动不会被保留,因此需要恢复。
我认为这可能就像用docScroll() in pub.init
替换直接调用$(window).on("load", docScroll()); in setBindings
一样简单,但不幸的是,这并不起作用。
有人提供建议吗?
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 :(得分: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;
} ();