Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 jQuery—显示大量可滚动数据的最佳方式_Javascript_Jquery_Html_Arrays - Fatal编程技术网

Javascript jQuery—显示大量可滚动数据的最佳方式

Javascript jQuery—显示大量可滚动数据的最佳方式,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我有一个长度为1.5k的数组,每个条目都需要显示(每个条目都有一组DIV),但当我一次显示所有条目时,浏览器大部分时间都会挂起。我试图找出最灵活、最简单和用户友好的方式来展示这些数据。我所有的想法都很难实现,或者不便于使用。到目前为止,我想到的是: 显示用户视口中的DIV(很难使其在所有屏幕配置上工作) 按页面对条目进行分组,并在滚动事件中进行切换(非用户友好-无可见滚动条) 当按下“加载更多”时加载更多条目(不是用户友好型的,如果用户想进入第1000个条目,则必须单击按钮100次,并且无论如

我有一个长度为1.5k的数组,每个条目都需要显示(每个条目都有一组DIV),但当我一次显示所有条目时,浏览器大部分时间都会挂起。我试图找出最灵活、最简单和用户友好的方式来展示这些数据。我所有的想法都很难实现,或者不便于使用。到目前为止,我想到的是:

  • 显示用户视口中的DIV(很难使其在所有屏幕配置上工作)
  • 按页面对条目进行分组,并在滚动事件中进行切换(非用户友好-无可见滚动条)
  • 当按下“加载更多”时加载更多条目(不是用户友好型的,如果用户想进入第1000个条目,则必须单击按钮100次,并且无论如何都会挂起浏览器)

显示此数据的最佳方式是什么?

更新-我还编写了另一个库:

使用此脚本,您可以执行以下操作:

var items      = [], // array of objects to load on scroll
    batchCount = 10;

// load more items
function showMore(howMany){
    // remove X amount of items from the total hidden item's jQuery object and show them
    var toLoad = items.splice(0, howMany), // from the items array, cut only the batch we need to show
        i;

    // Make sure that an image in the current batch is loaded before adding it to the DOM
    for( i=toLoad.length; i--; ){
        // show item toLoad[i] 
        batchCount--;
    }
}
    
function onScrollEnd(){
    if( batchCount <= 0 && items.length ){
        // load 10 items on every scroll
        batchCount = 10;
        showMore(batchCount);
    }
}

$(window).endless({offset:'20%', callback: onScrollEnd });
var items=[],//滚动加载的对象数组
batchCount=10;
//加载更多项目
函数showMore(有多少个){
//从总隐藏项的jQuery对象中删除X个数量的项并显示它们
var toLoad=items.splice(0,howmount),//从items数组中,只剪切我们需要显示的批
我
//在将当前批处理中的图像添加到DOM之前,请确保已加载该图像
for(i=toLoad.length;i--;){
//显示要加载的项目[i]
批次计数--;
}
}
函数onScrollEnd(){

如果(batchCount您需要分批工作,并使用某种无限滚动机制将所有项目中的每个批次渲染到屏幕上。请尝试用户体验堆栈交换:@vsync,我知道我应该分部分执行,但我不知道如何在jQuery中实现这一点。那么……因为您希望编程不在pow中的内容呃,现在要做的是…我想不出一个脚本可以完全开箱即用…我想你应该先精通javascript,因为这是非常基本的东西。