2012-03-23 3 views
0

Проблема, с которой я сталкиваюсь, заключается в том, что плагин infinitescroll достигает последней действительной нумерации страниц, а затем, если вы снова прокрутите страницу вниз, она снова вытащит последнее допустимое содержимое.Плагин jQuery с бесконечным прокруткой продолжает заполнять последнюю страницу

т.е. если у меня есть 3 действительных разбитые на страницах страниц контента,

страница/1 = возврат страница 1 Содержание страницы страницы/2 = возвращает 2 содержание страница страница/3 = возвращает 3 Содержание страницы/4 = возвращает страница 3 содержания страницы страницы/4 = 3 возвращает содержание страницы страницы/4 = 3 возвращает содержимое страницы страница/4 = 3 возвращает содержимое и т.д. ...

Если я ставлю на странице/99 он все еще возвращает содержимое страницы 3.

От поиска в Интернете Мне нужно настроить задний конец, чтобы вернуть 404, когда он пытается вызвать страницу с разбивкой по страницам, которая не существует.

У меня есть 2 проблемы с этим:

1) сайт моего клиента размещается на SquareSpace.com (они не дают доступа к 404 или очень много задней части на всех)

2) Даже если бы у меня был доступ, я не знаю, как это исправить.

Вот ссылка на статью, объясняя, что это вопрос:

https://github.com/paulirish/infinite-scroll/issues/49

Если кто-то может помочь мне бы очень признательна!

ответ

0

Я исправил проблему путем добавления счетчика к infinite-scroll обратному вызову следующим образом:

var total = $j(".pagination a:last").html(); 
var pgCount = 1; 
var numPg = total; 

    // jQuery InfiniteScroll Plugin. 
    container.infinitescroll({ 
     navSelector : '.pagination', 
     nextSelector : '.pagination a:first', 
     itemSelector : '.journal-entry-wrapper', 
     animate: true, 
     loading: { 
      finishedMsg: 'No more content to load.', 
      img: 'http://i.imgur.com/6RMhx.gif' 
     } 
    }, 
    // Trigger Masonry as a callback. 
    function(newElements) { 
     pgCount++; 

     if(pgCount == numPg) { 
      $j(window).unbind('.infscr'); 
      container.masonry('reload'); 
      container.append(newElements).masonry('appended', newElements, true); 
      $j('#infscr-loading').find('em').text('No more content to load.'); 
      $j('#infscr-loading').animate({ 
       opacity: 1 
      }, 200); 
      setTimeout(function() { 
       $j('#infscr-loading').animate({ 
        opacity: 0 
       }, 300); 
      }); 
     } else { 
      loadPosts(newElements); 
     } 
    }); 

}); 

function loadPosts(newElements) { 
    // Hide new posts while they are still loading. 
    var newElems = $j(newElements).css({ opacity: 0 }); 
    // Ensure that images load before adding to masonry layout. 
    newElems.imagesLoaded(function() { 
     // Show new elements now that they're loaded. 
     newElems.animate({ opacity: 1 }); 
     container.masonry('appended', newElems, true); 

     // Animate opaque post covers on hover. 
     $j(newElems).hover(function() { 
      $j(this).find('.postCover').stop(true, true).fadeOut(200); 
     }, function() { 
      $j(this).find('.postCover').stop(true, true).fadeIn(200); 
     }); 
    }); 
} 
+0

Надеется, что это помогает кто-то другое. Только для информации это было для клиента, который принимал участие в SquareSpace. –