2013-03-03 2 views
14

Я понимаю, что здесь есть несколько вопросов, которые затрагивают проблему бесконечной прокрутки. Однако большинство из них используют плагины.Как реализовать бесконечный/бесконечный прокрутки в DIV в Javascript/jQuery

Я хотел бы знать, как реализовать бесконечную прокрутку, которая будет работать с моими существующими функциями подкачки. В настоящее время у меня есть кнопка «загрузить больше», при нажатии на нее появятся следующие 10 элементов и добавятся в список. Вместо этого, когда нажата кнопка «загрузить больше», я бы хотел, чтобы это произошло, когда положение прокрутки опустилось до конца. Кроме того, этот список не находится на главной странице, он находится в пределах DIV. Хранение номера страницы в скрытом поле с идентификатором 'pageNum'.

$.ajax({ 
     type: "GET", 
     url: "/GetItems", 
     data: { 'pageNum': $('#pageNum').val() }, 
     dataType: "json", 
     success: function (response) { 
       $('#MyDiv ul').append(response.Html); 
       $('#pageNum').val(response.PageNum); 
      } 
     } 
}); 

#MyDiv 
{ 
    border:solid 1px #ccc; 
    width:250px; 
    height:500px; 
    overflow-y: scroll; 
} 

<div id="MyDiv"> 
    <ul> 
    <li>...</li> 
    ... 
    </ul> 
</div> 
+1

Возможно, самым простым способом было бы поместить элемент в самое нижнее положение списка, а затем, когда он появится в поле зрения, вы знаете, что они прокручиваются вниз, поэтому вы загружаете больше. Вы можете найти несколько ответов на SO о том, как проверить элемент, находящийся в области просмотра. –

+0

Спасибо, похоже, что это сработает, но как именно оно будет интегрироваться с моим кодом здесь. Я нашел это: http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport однако, когда я бы назвал функцию elementInViewport ? – Prabhu

ответ

30

простой способ, чтобы проверить, если вы достигли дна и вызвать затем щелчок-событие на вашей «нагрузки более» -Кнопка.

$(window).on('scroll', function(){ 
    if($(window).scrollTop() > $(document).height() - $(window).height()) { 
     $("#load-more").click(); 
    } 
}).scroll(); 

Сценарий, приведенный выше, является лишь примером, не используйте его в рабочей среде.

обновление

... и лучший способ, чтобы вызвать функцию вместо того, чтобы вызвать событие, которое вызывает функцию.

Update2

... и лучший способ: пусть пользователь решает, что делать, если он делает (в этом случае он прокручивает вниз, чтобы добраться до конца вашей страницы, а не достичь следующего стр.);)

+8

Вместо того, чтобы «щелкнуть», было бы лучше вызвать функцию, которую использует кнопка. (+1 в любом случае) – Doorknob

+2

Обратите внимание, что это может не сработать, если вы уже находитесь внизу страницы и обновите его: вы уже внизу, а триггер прокрутки не был запущен – Asenar

+1

@ Ассемар. Я обновил свой ответ. Запуск события прокрутки (или запуск события клика или даже лучший вызов функции, которую использует кнопка) при загрузке страницы должен сделать трюк ... – yckart

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