Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用无限滚动筛选项目_Javascript_Jquery_Filter_Infinite Scroll_Masonry - Fatal编程技术网

Javascript 使用无限滚动筛选项目

Javascript 使用无限滚动筛选项目,javascript,jquery,filter,infinite-scroll,masonry,Javascript,Jquery,Filter,Infinite Scroll,Masonry,我正在使用砌体生成“tiles”——我正在使用jQuery进行过滤,使用无限滚动——我正在使用它在服务器端加载更多的tiles 过滤器可以工作,但是一旦应用了过滤器并且通过无限滚动加载了更多的磁贴,则会加载未过滤的项目。我知道这背后的原因是因为卸载的tile还没有在客户端生成,但我宁愿保持这种方式,因为网站将很快获得大量数据 有没有办法在不加载客户端所有项目的情况下实现这一点?如果您能提供任何意见,我将不胜感激。我已经包括了下面的无限滚动脚本。我注意到这个链接(www.creativebloq.

我正在使用砌体生成“tiles”——我正在使用jQuery进行过滤,使用无限滚动——我正在使用它在服务器端加载更多的tiles

过滤器可以工作,但是一旦应用了过滤器并且通过无限滚动加载了更多的磁贴,则会加载未过滤的项目。我知道这背后的原因是因为卸载的tile还没有在客户端生成,但我宁愿保持这种方式,因为网站将很快获得大量数据

有没有办法在不加载客户端所有项目的情况下实现这一点?如果您能提供任何意见,我将不胜感激。我已经包括了下面的无限滚动脚本。我注意到这个链接(www.creativebloq.com/web design/filter-web-content-infinite-scroll-10134808),它听起来相当相关,但我不确定它将如何实现

!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。抱歉说得含糊不清!