2015-06-18 142 views
0

我有一個基於聊天的系統,我使用jQuery/AJAX在MVC框架中構建。當頁面加載時,它會用來自數據庫的最後x個響應填充聊天窗口。jQuery scrollTop無法在頁面加載

我到處尋找答案,並且找不到任何關於此的內容。我試過的每一個選擇都不能解決它。

我使用此功能向下滾動到我的聊天窗口的底部;

function scrollToBottom() 
{ 
    var panel = $('.panel-body#main-window'); 
    panel.scrollTop(panel.height()); 
} 

這是我的CSS:

.panel-body#main-window 
{ 
    overflow-y: scroll; 
    height: 550px; 
    width: 100% 
} 

當我把它綁定到一個onClick處理函數這工作得很好,但不管如何我嘗試過,也不會滾動到的底部我的面板在我的$(document).ready();呼叫結束之前。所以當頁面加載時,它不會滾動到我的容器底部。

在Firefox和Chrome中嘗試了這兩種方法,但都沒有成功。我的功能正在被調用,但是當它在$(document).ready();中被調用時,它拒絕滾動到我面板的底部。

我也試過這個功能,它也不管用;

$(window).on('load', function(){ 
    setTimeout(scrollToBottom(), 500); 

}); 
+0

面板在您嘗試滾動時可見嗎?否則,'.height()'將返回'0'。 – melancia

+0

@MelanciaUK;不,這不是問題。我使用console.log來返回高度,並返回正確的值。甚至嘗試手動設置我自己的。該函數返回DOM對象和正確的高度。這只是在頁面加載不工作。 –

+0

這裏發佈的代碼沒有什麼問題(除了setTimeout用法在下面的答案中已經指出):例如。 http://jsfiddle.net/znxca14s/你可以做一個可重複的樣本? – blgt

回答

2

你是不是傳遞函數的引用您的setTimeout,應爲我相信:

$(window).on('load', function(){ 
    setTimeout(scrollToBottom, 500); 
}); 

你正在做它的方式,功能scrollToBottom將盡快執行該代碼被評估。

+1

很好斑點。 – melancia

+0

謝謝!希望這解決了OP的問題:) – taxicala

+0

啊!這正是問題所在。它現在有效。儘管如此,仍然不完全理解傳遞函數名與沒有括號的區別。 –