Javascript 使用无限滚动筛选项目
我正在使用砌体生成“tiles”——我正在使用jQuery进行过滤,使用无限滚动——我正在使用它在服务器端加载更多的tiles 过滤器可以工作,但是一旦应用了过滤器并且通过无限滚动加载了更多的磁贴,则会加载未过滤的项目。我知道这背后的原因是因为卸载的tile还没有在客户端生成,但我宁愿保持这种方式,因为网站将很快获得大量数据 有没有办法在不加载客户端所有项目的情况下实现这一点?如果您能提供任何意见,我将不胜感激。我已经包括了下面的无限滚动脚本。我注意到这个链接(www.creativebloq.com/web design/filter-web-content-infinite-scroll-10134808),它听起来相当相关,但我不确定它将如何实现Javascript 使用无限滚动筛选项目,javascript,jquery,filter,infinite-scroll,masonry,Javascript,Jquery,Filter,Infinite Scroll,Masonry,我正在使用砌体生成“tiles”——我正在使用jQuery进行过滤,使用无限滚动——我正在使用它在服务器端加载更多的tiles 过滤器可以工作,但是一旦应用了过滤器并且通过无限滚动加载了更多的磁贴,则会加载未过滤的项目。我知道这背后的原因是因为卸载的tile还没有在客户端生成,但我宁愿保持这种方式,因为网站将很快获得大量数据 有没有办法在不加载客户端所有项目的情况下实现这一点?如果您能提供任何意见,我将不胜感激。我已经包括了下面的无限滚动脚本。我注意到这个链接(www.creativebloq.
!function($){
var $container = $(InfiniteConfig.container);
var pageCount = 0;
var cpage = 1;
var _next = $('div.k2Pagination a:contains("Next")'),
_divNext = $('.view-more'),
_btnNext = $('a#viewplus'),
_divLoading = $('div.k2-masonry-loading'),
_btnLoading = $('div.loading_spinner_wrapper');
$container.infinitescroll({
navSelector : InfiniteConfig.navSelector,
nextSelector: _next,
itemSelector: InfiniteConfig.itemSelector,
loading : {
selector : _divLoading,
img : _btnLoading.html(),
msgText : '',
speed: 'fast',
finishedMsg : InfiniteConfig.finishedMsg,
finished : function() {
_btnLoading.css('display','none');
setTimeout(function(){
_divNext.css('display','block');
},500);
},
},
errorCallback: function(){
_divNext.css('display','block');
_divLoading.remove();
_divNext.addClass('finished').html(InfiniteConfig.finishedMsg);
},
debug : true,
path : function () {
pageCount += 1;
var path = $(_next).attr('href')
var _url = [];
_url = path.split('start=');
_url[0] += "start";
url = _url[0];
numItems = parseInt(_url[1]);
nextLimit = numItems * (pageCount);
return [InfiniteConfig.baseURL + url + '=' + nextLimit];
}
},
function (newElements, data, url) {
var elemWidth = $('#itemListPrimary .itemContainer').width(),
$newElems = $( newElements ).css({ opacity: 0 , width: elemWidth});
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
});
$(window).unbind('.infscr');
_btnNext.click(function(){
_divNext.css('display','none');
_btnLoading.css('display','block');
$container.infinitescroll('retrieve');
return false;});
}(jQuery);
再次感谢。既然我知道无限痛苦卷轴有多痛苦,我就是这样度过的 我在newElements函数中按类过滤了这些项,如下所示
function (newElements, data, url) {
var elemWidth = $('#itemListPrimary .itemContainer').width(),
$newElems = $( newElements ).css({ opacity: 0 , width: elemWidth});
$newElems.imagesLoaded(function(){
// show new elements
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
var children = $newElems.children();
// if filter is empty select all elements
if (!window.data) {
console.log("nothing selected");
}
// if filter is selected filter elements
else {
for (var i = 0; i < children.length; i++) {
if ($(this).hasClass(window.data)) {
$('.itemContainer').show();
} else {
$('.itemContainer').not('.' + window.data).hide();
}
// append layout
$(window).bind('resize.masonry orientationchange.masonry').trigger('resize.masonry');
};
};
});
});
函数(新元素、数据、url){
var elemWidth=$('#itemListPrimary.itemContainer').width(),
$newElems=$(newElements).css({opacity:0,width:elemWidth});
$newElems.imagesLoaded(函数(){
//展示新元素
$newElems.animate({opacity:1});
$container.mashing('added',$newElems,true);
var children=$newElems.children();
//如果过滤器为空,请选择所有元素
如果(!window.data){
console.log(“未选择任何内容”);
}
//如果选择“过滤器”,则选择“过滤器元件”
否则{
对于(变量i=0;i
既然我知道无限痛苦卷轴有多痛苦,我就是这样度过的
我在newElements函数中按类过滤了这些项,如下所示
function (newElements, data, url) {
var elemWidth = $('#itemListPrimary .itemContainer').width(),
$newElems = $( newElements ).css({ opacity: 0 , width: elemWidth});
$newElems.imagesLoaded(function(){
// show new elements
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
var children = $newElems.children();
// if filter is empty select all elements
if (!window.data) {
console.log("nothing selected");
}
// if filter is selected filter elements
else {
for (var i = 0; i < children.length; i++) {
if ($(this).hasClass(window.data)) {
$('.itemContainer').show();
} else {
$('.itemContainer').not('.' + window.data).hide();
}
// append layout
$(window).bind('resize.masonry orientationchange.masonry').trigger('resize.masonry');
};
};
});
});
函数(新元素、数据、url){
var elemWidth=$('#itemListPrimary.itemContainer').width(),
$newElems=$(newElements).css({opacity:0,width:elemWidth});
$newElems.imagesLoaded(函数(){
//展示新元素
$newElems.animate({opacity:1});
$container.mashing('added',$newElems,true);
var children=$newElems.children();
//如果过滤器为空,请选择所有元素
如果(!window.data){
console.log(“未选择任何内容”);
}
//如果选择“过滤器”,则选择“过滤器元件”
否则{
对于(变量i=0;i
masonary创建的互动程序是否完全在客户端生成?它们都是在服务器端生成的。当我说tile不是客户端生成的时候,我指的是卸载的tile。抱歉说得含糊不清!masonary创建的互动程序是否完全在客户端生成?它们都是在服务器端生成的。当我说tile不是客户端生成的时候,我指的是卸载的tile。抱歉说得含糊不清!