2012-07-25 85 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'); 
};