5

我只是在使用 jQuery prepend,但无法按预期工作。

我在做什么:

每隔一秒添加一个.contentdiv 到#maindiv

但是,当我向下滚动一点时[一旦页面充满了内容],我会不断滚动回到#main's top 或 latest 前面.content

我如何能:

防止viewport改变 - 比如在追加的情况下

相关小提琴

4

1 回答 1

13

正如我在评论中解释的那样,滚动实际上并没有改变。窗口的滚动基于“与顶部的距离”(DfT)。也就是说,如果您没有滚动条,那么您的 DfT 为 0。一旦引入了滚动条,您现在就有一段距离可以使用了。

因为内容越来越长,所以视口只有这么多像素高,一些内容“从”页面底部“掉下来”(预先使 DfT 偏离新元素的高度)。

我能想到的最好方法是用新元素的高度来对抗它。这允许您滚动到一个位置,然后随着新元素的添加,您相应地修改滚动位置。

这是我的意思的一个例子:http: //jsfiddle.net/bradchristie/66RvC/1/

和代码(供参考):

var f = function(){
    var t = $(window).scrollTop(),      // Window's current scroll position
        $d = $(d()).prependTo('#main'), // store the new element
        h = $d.outerHeight();           // also get its height
    if (t){                             // Only adjust if they've scrolled
        $(window).scrollTop(t + h);     // add the delta to the scroll position
    }
    setTimeout( f, 1000 );
};
于 2012-10-17T18:24:41.647 回答