2015-06-18 2 views
0

У меня есть чат-система, которую я создаю в рамках MVC, используя jQuery/AJAX. Когда страница загружается, она заполняет окно чата последними ответами из базы данных.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

Спасибо! Надеюсь, что это решает проблемы OPs :) – taxicala

+0

А! Это была проблема. Он работает сейчас. Тем не менее, не все понимают разницу между передачей имени функции с помощью vs без скобки. –

Смежные вопросы