如何在不改变滚动位置的情况下加载数据?

时间:2014-03-21 01:12:21

标签: javascript jquery

为什么在我在给定数据中添加数据时滚动位置会发生变化。我滚动到顶部它前置数据但滚动位置到顶部。但我在Facebook和whatsapp中看到了很多例子,当它加载以前的数据时,滚动位置保持不变。

我们可以保留滚动位置吗? http://jsfiddle.net/cQ75J/17/

if ($(this).scrollTop() === 0 && pages.length) {
        console.log("up");
        $("#next").html('')
        $("#pre").html('')
        $("#next").html($("#current").html());
        $("#current").html('');


           $("#current").html(pages.pop())
            .prependTo($("#fullContainer"));
    }

1 个答案:

答案 0 :(得分:0)

这必须在Javascript中完成:

执行此操作的一种方法是使用与您前置的相同高度和宽度的隐藏div,并在向其添加内容时测量它的scrollHeight。然后,在您添加文本之后,只需将内容div的scrollTop设置为隐藏div的scrollHeight:

$(document).ready(function(){

    setTimeout(function(){

        $("div#hiddenDiv").html("Testing<br><br><br>");

        var coffset = document.getElementById("hiddenDiv").scrollHeight;

        $("div#content").prepend($("div#hiddenDiv").html());
        document.getElementById("content").scrollTop += coffset;

    }, 5000);

});

在下面的小提琴中,几秒后文本将被添加到div,但滚动 职位不会改变。

JSFiddle