Плагин jQuery InfiniteScroll загружает последнюю страницу снова и снова - PullRequest
2 голосов
/ 19 февраля 2012

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

$('#catalog').infinitescroll({

        navSelector  : "div.page-nav:last",            
                       // selector for the paged navigation (it will be hidden)
        nextSelector : "div.page-nav a.navnext:last",    
                       // selector for the NEXT link (to page 2)
        itemSelector : "#catalog div.single",          
                       // selector for all items you'll retrieve

        bufferPx     : 400
}); 

И моя нумерация страниц выглядит следующим образом:

<div id="page-nav" class="page-nav"> 
    <div class="top">
        <a id="page-1" class="active">1</a>
        <a id="page-2" href="?page=2">2</a>
        <a id="page-3" href="?page=3">3</a>
        <a id="page-4" href="?page=4">4</a>
        <a id="page-5" href="?page=5">5</a>
        <a id="page-6" href="?page=6">6</a>
        <a id="page-7" href="?page=7">7</a>
        </div>
    <div class="bottom">
        <span class="right">
            <a class="navnext" href="?page=2" id="next-2">Next</a>
                <span class="next">Ctrl</span>
        </span>
    </div>
</div>

Может ли кто-нибудь помочь мне с этим, пожалуйста?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 20 февраля 2012

OK. На самом деле это не было ошибкой в ​​плагине Infinite Scroll. Дело в том, что мой скрипт не возвращал ошибку 404, если такой страницы не было. Он просто возвращал последнюю страницу, которая добавлялась к контенту снова и снова. Чтобы решить эту проблему, я сохранил количество всех страниц, которые я имел и хотел показать, увеличил переменную после каждой загрузки контента и отменил прокрутку после успешной загрузки всех страниц. Код ниже:

var curPage = 1;
var pagesNum = $("div.page-nav").find("a.pag:last").text();   // Number of pages

$('#catalog').infinitescroll({

        navSelector  : "div.page-nav:last",            
                       // selector for the paged navigation (it will be hidden)
        nextSelector : "div.page-nav a.navnext:last",    
                       // selector for the NEXT link (to page 2)
        itemSelector : "#catalog div.line",          
                       // selector for all items you'll retrieve

        bufferPx     : 800

        }, function() {  // Optional callback when new content is successfully loaded

            curPage++;

            if(curPage == pagesNum) {

                $(window).unbind('.infscr');

            } else {}

});

Я надеюсь, что это поможет кому-то еще.

0 голосов
/ 07 июня 2016

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

maxPage: "<?php echo $_productCollection->getLastPageNumber(); ?>",
...