Разрешить infinitescroll.js запускать X раз, а затем загружать больше сообщений
Я использую infinitescroll.js script, и он работает очень хорошо. Я узнал, как заменить стандартные функции кнопкой загрузить больше, используя этот код:
$(window).unbind('.infscr');
$('.js-next-reports').click(function() {
$grid.infinitescroll('retrieve');
return false;
});
$(document).ajaxError(function(e, xhr, opt) {
if (xhr.status == 404) $('.js-next-reports').remove();
});
Однако то, что я хотел бы сделать, это позволить бесконечной прокрутке работать 3/4 раза, а затем показывать кнопку .js-next-reports
. Я не уверен, как следить за тем, сколько раз бежал бесконечный свиток. Я знаю, что существует currPage
var, но с помощью console.log я не могу понять, как я могу ссылаться на него.
Существует также параметр maxPage
для infinitescroll, который ограничивает его запуском всего X раз, поэтому я мог бы каким-то образом использовать это? Я не уверен, как получить console.log вариантов. Вот мой код инициализации, если это помогает ($ grid - это просто ссылка на div)
$grid.infinitescroll({
// selector for the paged navigation (it will be hidden)
navSelector : ".pagination",
// selector for the NEXT link (to page 2)
nextSelector : ".pagination .next",
// selector for all items you'll retrieve
itemSelector : ".infinite-scroll-post",
contentSelector : "#infinite-scrollable",
debug: true,
// finished message
loading: {
img: "ajax-loader.gif",
msgText: "Loading more projects...",
finishedMsg: 'No more pages to load.',
}
},
});
Может быть что-то вроде:?
if ( .currPage == "3" ) {
$(window).unbind('.infscr');
$('.js-next-reports').click(function() {
$grid.infinitescroll('retrieve');
return false;
});
$(document).ajaxError(function(e, xhr, opt) {
if (xhr.status == 404) $('.js-next-reports').remove();
});
}
Но я не знаю, как считать свитки или получить доступ currPage
.
Спасибо
Ответы
Ответ 1
JSFiddle поможет проверить код, но из того, что я прочитал в своей документации, есть обратный вызов, который позволяет вам получить доступ к currPage внутри объекта состояния. Ваш код должен выглядеть примерно так:
$grid.infinitescroll({
// selector for the paged navigation (it will be hidden)
navSelector : ".pagination",
// selector for the NEXT link (to page 2)
nextSelector : ".pagination .next",
// selector for all items you'll retrieve
itemSelector : ".infinite-scroll-post",
contentSelector : "#infinite-scrollable",
debug: true,
// finished message
loading: {
img: "ajax-loader.gif",
msgText: "Loading more projects...",
finishedMsg: 'No more pages to load.',
},
appendCallback: false
}, function(newitems, opts) {
if(opts.state.currPage == 3) {
$(window).unbind('.infscr');
}
}
});