Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Jquery e筛选、排序和偏移量(已显示的记录数)。这允许您查询数据,这样您就可以一致地获取与筛选器相关的下一条记录,而无需重复,并且还可以知道何时没有结果_Jquery_Ajax_Lazy Loading - Fatal编程技术网

Jquery e筛选、排序和偏移量(已显示的记录数)。这允许您查询数据,这样您就可以一致地获取与筛选器相关的下一条记录,而无需重复,并且还可以知道何时没有结果

Jquery e筛选、排序和偏移量(已显示的记录数)。这允许您查询数据,这样您就可以一致地获取与筛选器相关的下一条记录,而无需重复,并且还可以知道何时没有结果,jquery,ajax,lazy-loading,Jquery,Ajax,Lazy Loading,必须同时具有这两个属性 如果两者都需要,那么您的解决方案本质上将是复杂的。此解决方案可能只值得在连接有限的环境中考虑 您最好的选择可能是使用相同的筛选、排序、偏移模型,但随后您将计算页面中现有项的偏移量(通过计算类的元素)。您的服务器端查询可以获取所有项,直到它拥有过滤器的n个下一个,或者只添加与过滤器相关的项 在任何情况下,您可能都不会节省太多,因为每次重新应用筛选器时,您都需要检查是否有足够的项目,如果没有,则需要进行服务器调用 您也可以完全替换dom元素,但可以使用类似的框架进行部分本地数

必须同时具有这两个属性
如果两者都需要,那么您的解决方案本质上将是复杂的。此解决方案可能只值得在连接有限的环境中考虑

您最好的选择可能是使用相同的筛选、排序、偏移模型,但随后您将计算页面中现有项的偏移量(通过计算类的元素)。您的服务器端查询可以获取所有项,直到它拥有过滤器的n个下一个,或者只添加与过滤器相关的项

在任何情况下,您可能都不会节省太多,因为每次重新应用筛选器时,您都需要检查是否有足够的项目,如果没有,则需要进行服务器调用


您也可以完全替换dom元素,但可以使用类似的框架进行部分本地数据查询。这将有更简单的管理和会话持久性,尽管它会为你的应用程序添加一个额外的层。

你有没有收到任何错误。没有错误。上面的代码可以工作,但不是最好的方法。我要求提供另一种方法来实现这一点。您是否有一个DB列用于过滤数据@Leete过滤器是自定义的帖子类型分类。您是否可以添加一个html示例或一个fiddle/代码片段来直观地了解您所面临的问题?谢谢您的回复。我正在努力理解你的意思,因此,如果可能的话,一个代码示例对这两个方面都很好。如果你对代码进行修改,我将能够对其进行编辑,以便为你提供两个选项的真实示例。好的,非常感谢你在这方面的帮助,非常感谢。希望没问题,如果你还需要什么,请告诉我。我看到你拉小提琴,但它不起作用。添加一些html并模拟ajax调用,使其看起来像在您的网站中一样(使其成为一个工作示例)@leete这里有一些文档,您可以模拟ajax请求,当然,因为问题是关于前端的,所以您可以使用数据属性模拟静态ajax调用,如文档所示:。下面是一个JSFIDLE ajax工作示例:。
jQuery( function( $ ) {

    var $divs = $('.box');

    //filter multiple divs on select
    var $selects = $('.filter_dd').on('change', function() { 

    var css_list_array = [];
        $selects.each(function(index){

            if ($(this).has('option:selected')){

                if( $(this).val() !== '' ) { 
                    var css = '.' + $(this).val();
                    var found = $.inArray(css, css_list_array);
                    if(found < 0) {
                        //if not already in array - add it
                        css_list_array.push(css); 
                    } 
                } 
            }
        });
        var css_string = css_list_array.join(''); 
        console.log(css_string);
        var $el = $(css_string); //selected CSS names           
        console.log($divs); //divs not being selected as this is empty
        $divs.removeClass('is-animated').fadeOut().promise().done(function() 
        {
            if(css_string == null || css_string==''){
                $divs.addClass('is-animated').fadeIn();
            } else {
                $el.addClass('is-animated').fadeIn();
            }
        });         
    });     
});
    jQuery(document).ready(function($) {
        $(window).scroll(function() {
            var that = $('#loadMore');
            var page = $('#loadMore').data('page');
            var css_select = $('#loadMore').data('css');
            var newPage = page + 1;
            var ajaxurl = $('#loadMore').data('url');
            var docViewTop = $(window).scrollTop();
            var docViewBottom = docViewTop + $(window).height();
            var elemTop = $('#loadMore').offset().top;
            var elemBottom = elemTop + $('#loadMore').height();  



        if( $('#no-more').length == 0) {
        //check if scrolled to 'load more' element
        if ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)) {
            if (typeof loading != 'undefined' && loading) return;
            loading = true; 
            $('#resource_spinner').show();

            $.ajax({
                url: ajaxurl,
                type: 'post',
                data: {
                    page: page,
                    action: 'resources_load_more'
                },
                error: function(response) {
                    console.log(response);
                },
                success: function(response) { 
                    if (response == 0) {
                        //check if any more post
                        if ($("#no-more").length == 0) {
                            $('#ajax-content').append('<div id="no-more" style="text-align:center;font-size:22px;font-weight:bold"><p>No more posts to load.</p></div>');
                        }
                        $('#loadMore').hide();
                        $('#resource_spinner').hide();
                    } else {
                        $('#loadMore').data('page', newPage);
                        $('#ajax-content').append(response);
                    }
                },
                complete: function(){
                    $('#resource_spinner').hide();
                    loading = false;    
                    $divs = $('#ajax-content').find(".box");

                    if(css_select){
                        console.log('ajax'+ css_select);
                        $divs.not(css_select).hide();  
                    }
                }
            });
          }
        }
    });
});