jQuery prepend - 阻止自动滚动

时间:2012-10-17 18:12:34

标签: jquery scroll prepend

我刚刚使用jQuery prepend并且无法按预期工作。

我在做什么:

  

每隔一秒将.content div加到#main div

但是,当我向下滚动[一旦页面内容充满],我会继续滚动回#main的顶部或最新前置.content

我如何:

  

阻止viewport更改 - 例如附加

相关fiddle

1 个答案:

答案 0 :(得分: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 );
};