Railsアプリに無限スクロールページを実装しようとして、このrailscastをフォローしています。ユーザーがページの一番下までスクロールすると、新しいアイテムのセットが追加されてページが拡張されますが、ページに複数回追加され、配列内のすべてのアイテムが読み込まれている場合でも、スクロールダウン時にイベントが再度トリガーされます、同じアイテムのセットを再度複数回追加します。
私が欲しいのは、ユーザーが一番下にスクロールするたびにアイテムの「次のページ」を追加し、ユーザーが再び一番下にスクロールすると次のページを追加することです。
この関数のjQueryは次のとおりです。
jQuery ->
if $('.pagination').length
$(window).scroll ->
url = $('.pagination .next_page').attr('href')
if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
$('.pagination').text('Fetching more products...')
$.getScript(url)
$(window).scroll()
これが対応するJavaScriptです
$('#products').append('<%= j render(@products) %>');
<% if @products.next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@products) %>');
<% else %>
$('.pagination').remove();
<% end %>