TakteS
@TakteS
Elixir/Erlang developer

Как привязать бесконечный скроллинг к html элементу?

Как сделать подгрузку для своего (ol#messages) скролл бара? Сейчас подгружает при прокрутке всей страницы.

Java Script

var currentPage = 1;
var intervalID = -1000;

function checkScroll() {
  if (nearBottomOfPage()) {
    currentPage++;
    jQuery.ajax('?page=' + currentPage, {asynchronous:true, evalScripts:true, method:'get', success: function(data, textStatus, jqXHR) {
		$('.messages').append(jQuery(data).find('.messages').html());
		if(typeof jQuery(data).find('.messages').html() == 'undefined' || jQuery(data).find('.messages').html().trim().length == 0){
			clearInterval(intervalID);
		}
	},});
  }
}

function nearBottomOfPage() {
  return scrollDistanceFromBottom() < 50;
}

function scrollDistanceFromBottom(argument) {
  return pageHeight() - (window.pageYOffset + self.innerHeight);
}

function pageHeight() {
  return Math.max(document.body.scrollHeight, document.body.offsetHeight);
}

$('document').ready(function(){
	intervalID = setInterval(checkScroll, 250);
})
;



HTML

<ol id='messages'>
  <div class='messages'>
    <li>Сообщение</li>
    <li>Сообщение</li>
    ....
  </div>
</ol>



CSS

.body-mess .background .autor-list ol:hover {
  overflow-y: scroll;
}



У ol#messages есть свой скролл-бар, вот при его прокрутке и должна происходить подгрузка.
  • Вопрос задан
  • 3946 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
jsfiddle.net/P9sQc
приблизительно так.
Ответ написан
Satanpit
@Satanpit
Front-end developer
Код у Вас, мягко говоря ужасный.
Если Вы уже используете jQuery то используйте его, а то у вас то чистый JS то jQuery, да еще и setInterval, зачем он там ума не приложу, есть же событие scroll.
Перепишите код, согласно примеру выше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы