0

所以我有这个javascript:

$(window).scroll(function () {
    if ($(window).scrollTop() > 0 && !document.contains(document.getElementById('toTop'))) {
        var top = '<div id="toTop" onclick="tTop()"></div>';
        $('body').append(top);
    }
});
function tTop() {
    $('html,body').scrollTop(0);
}
$(window).scroll(function () {
    if (document.contains(document.getElementById('toTop')) && $(window).scrollTop() == 0) {
        $('div').remove('#toTop');
    }
});

如果页面在滚动条位于顶部时加载,它就可以正常工作;但是,当我在滚动条位于底部时刷新页面时,页面仍会向上滚动,但滚动条会停留在底部。谁能告诉我如何解决这个问题?

4

1 回答 1

1

当我在滚动条位于底部时刷新页面时,页面仍会向上滚动,但滚动仍停留在底部

也许我误读了这一点,但您是否担心按钮停留在页面底部?还是$(window).scrollTop()点击按钮后设置为0,页面刷新后?

无论如何,我会将滚动回调分离到另一个方法,检查元素是否存在(我使用按钮作为示例而不是 div)

function scrollCallback() {
    if ($(window).scrollTop() > 0) {
        if ($('body').has('#toTop').length == false) {
            var top = '<input type="button" id="toTop" onclick="tTop();" value="top" />';
            $('body').append(top);
        }
    } 
    else {
        // Removes the button if the scroll is at the top of the page.
        $('body #toTop').remove();
    }
}

然后在您的页面加载时,调用 scrollCallback,并将您的滚动设置为也使用回滚:

$(function() {
    // Execute it when you load the page.
    scrollCallback();       
    $(window).scroll(scrollCallback);
});
于 2013-08-09T14:01:54.047 回答