我有一个简单的 JavaScript 函数来检测页面滚动。
一切正常。
唯一的遗漏是,当刷新页面时,滚动不会保留,因此需要恢复。
我认为这可能很简单,只需将 pub.init 中对 docScroll() 的直接调用替换为 $(window).on("load", docScroll( ));在 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;
} ();
最佳答案
滚动事件处理程序应该设置一次。所以我会做这样的事情:
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;
} ();
关于javascript - 页面刷新更新功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44196704/