页面刷新时更新功能

时间:2017-05-26 08:10:59

标签: javascript jquery

我有一个简单的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;
} ();

1 个答案:

答案 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;
} ();