javascript - 使用js从服务器端滚动延迟加载表

标签 javascript jquery html

我需要显示一个包含大量项目的表格。 所以我想通过服务器端的延迟加载来实现它。 然后,当用户向下(或向上)滚动时,我调用服务器以获取下一个/上一个定义的项目数并显示它们而不是旧项目(或将它们添加到旧项目)。 有没有一种简单的方法来实现它? 是否有一些 JavaScript 库可以帮助我实现此功能? 任何帮助将不胜感激。谢谢

最佳答案

您可以使用 scrollHeightclientHeightscrollTop 来实现此目的,以检测滚动条何时靠近底部区域,然后获取您的新项目:

这是一个例子(the demo):

HTML

<div id="container">  
    <div id="scrollbox" >  
        <div id="content" >  
            <p>Lorem ipsum dolor sit amet</p>  
            <p>Ipsum lorem dolor amet sit</p>  
            <p>Dolor lorem ipsum amet tis</p>  
            <p>Lorem ipsum dolor sit amet</p>  
            <p>Ipsum lorem dolor amet sit</p>  
            <p>Dolor lorem ipsum amet tis</p>  
            <p>Lorem ipsum dolor sit amet</p>  
            <p>Ipsum lorem dolor amet sit</p>  
            <p>Dolor lorem ipsum amet tis</p>  
        </div>  
    </div>  
    <p><span id="status" ></span></p>  
</div>  

CSS

#container{   
    width:400px;   
    margin:0px auto;   
    padding:40px 0;   
}  
#scrollbox{   
    width:400px;   
    height:300px;    
    overflow:auto; overflow-x:hidden;   
}  
#container > p{   
    background:#eee;   
    color:#666;   
    font-family:Arial, sans-serif; font-size:0.75em;   
    padding:5px; margin:0;   
    text-align:rightright;  
} 

JavaScript

$('document').ready(function(){  
    updatestatus();  
    scrollalert();  
});  
function updatestatus(){  
    //Show number of loaded items  
    var totalItems=$('#content p').length;  
    $('#status').text('Loaded '+totalItems+' Items');  
}  
function scrollalert(){  
    var scrolltop=$('#scrollbox').attr('scrollTop');  
    var scrollheight=$('#scrollbox').attr('scrollHeight');  
    var windowheight=$('#scrollbox').attr('clientHeight');  
    var scrolloffset=20;  
    if(scrolltop>=(scrollheight-(windowheight+scrolloffset)))  
    {  
        //fetch new items  
        $('#status').text('Loading more items...');  
        $.get('new-items.html', '', function(newitems){  
            $('#content').append(newitems);  
            updatestatus();  
        });  
    }  
    setTimeout('scrollalert();', 1500);  
}  

PS:我从 here 复制/粘贴代码源.

关于javascript - 使用js从服务器端滚动延迟加载表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33236827/

相关文章:

javascript - HTML5 和 Javascript 角色?

javascript - 如何代理通过函数内部的 jQuery.find() 创建的每个元素的上下文?

jquery - Coda slider hack - 使用 jQuery 动画和位置方法的标记移动

html - 如何在 flexbox 中获取具有外部高度和内部宽度的 div

javascript - 单击时使用 javascript 删除 HTML 元素

javascript - 选择器菜单不会关闭

javascript - 单击 div 类 a href 按钮时如何聚焦于输入元素

javascript - 正则表达式:.exec() 函数未返回预期输出

javascript - 如何在石头剪刀布模拟中从onclick事件返回值?

javascript - 从排序中排除行 - Datatables.net