2012-07-25 169 views
1

的底部我有一个包含一些日志滚动到heightless动态DIV

<div id="log"> 
    <div class="logitem"></div> 
    <div class="logitem"></div> 
    <div id="containerbottom"></div> 
</div> 

要在日志上运行一个div而言,我更追加数目不详的<div class="logitem"></div>

我想追加我已经尝试使用该项目

之后滚动到容器的底部:

$('#log').animate({ 
    scrollTop: $('#containerbottom').offset().top 
}); 

,但它似乎没有表现良好。

我还有其他的选择吗?

感谢

回答

3

尝试使用一个被称为在间隔函数向下滚动:

function scrollDown() 
{ 
    $("html, body").animate({ scrollTop: $(document).height() },'slow'); 
} 

setInterval(scrollDown,1000); // Executes function every 1,000 milliseconds. 

编辑:

最近我发现这是一个很好的做法尽可能使用递归setTimeout而不是setInterval以避免堵塞事件队列并在出现错误时导致大量重复的错误消息。此方法仅适用于不需要精确时序的应用程序。如果您仍然需要每1,000毫秒需要称为的函数(例如秒表),然后继续使用setInterval

例子:

(function scrollDown(){ 
    $("html, body").animate({ scrollTop: $(document).height() },'slow'); 
    setTimeout(scrollDown,1000); 
})(); 

如果您的jQuery动画在jQuery的动画队列中堆积,你可能想使用.stop().animate(...)

0

的问题是你想动画#log,当它实际上html的&体(我同时使用,来解决某些浏览器不喜欢一个或其他)。

这是我在我的JS库中使用的一个快速的小函数,只是除了任何#id之外都是动态的,但基本上它会滚动$('html,body')。

jsFiddle Example

jNamespace._goToByScroll = function(id) { 
    //NOTE: Scroll to specifiC#ID in html 
    //Useage: jNamespace.goToByScroll('top') - ommit #, added inside function 
    //ENDNOTE 

    $('html,body').animate({ scrollTop: $("#" + id).offset().top }, 'slow'); 
};