下拉滚动加载更多数据

简单地实现一个下拉滚动时加载更多数据的效果。这种效果经常在手机端、瀑布流时看到

 1 KISSY.add(‘load‘,function(S,Core,IO,XTemplate){
 2     var $ = S.all, D = S.DOM, E = S.Event;
 3     var API = {
 4         ‘query‘:‘query.do‘
 5     };
 6     var tpl = ‘{{#each result}}‘+
 7             ‘<tr>‘+
 8                 ‘<td><input type="checkbox" name="fileCheck" class="J_FileCheck" value="{{fileId}}" data-idx="{{xindex}}"/> </td>‘+
 9                 ‘<td>{{fileName}} <span class="btnLabel J_FilePreview">预览</span> </td>‘+
10                 ‘<td>{{length}}K</td>‘+
11                 ‘<td>{{modifyTime}}</td>‘+
12                 ‘<td><span class="btnLabel J_FileDownload">下载</span>‘ +
13                 ‘</td>‘ +
14             ‘</tr>‘ +
15             ‘{{/each}}‘;
16
17     var X = {
18         init:function(){
19             this.box = $(‘.J_FileTable‘);
20             this.currentPage = 1;
21             this.loading = false;
22             this.loadTimer = null; //定时器是为了防止滚动过程中,不断的发请求
23
24             this._queryFile();
25             this.bindDialog();
26         },
27         bindDialog :function(){
28             var self = this;
29             self.box.on(‘scroll‘,function(e){
30                 var container = $(this);
31                 self.loadTimer && clearTimeout(self.loadTimer);
32                 //定时器是为了防止滚动过程中,不断的发请求
33                 self.loadTimer = setTimeout(function(){
34                 //如果请求发出还没有回来时,就先不发送下个请求
35                     if(!self.loading){
36                         var obj = self.box.one(‘table‘);
37                         if(obj.height() <= container.scrollTop() + container.height()){
38                             self._queryFile();
39                         }
40                     }
41                 },100);
42             })
43         },
44         _queryFile:function(){
45             var self = this;
46             self.loading = true;
47             IO({
48                 url: API.query,
49                 data: {
50                     page: self.currentPage
51                 },
52                 type: ‘get‘,
53                 dataType: ‘json‘,
54                 success: function (data) {
55                     if(data && data.result && data.result.length>0){
56                         var html = new XTemplate(tpl).render( data);
57                         if(self.currentPage<2){
58                             self.box.all(‘.J_FTBody‘).html(html);
59                         }else{
60                             self.box.all(‘.J_FTBody‘).append(html);
61                         }
62                         self.currentPage +=1;
63                     }else{
64                         self.box.all(‘.J_FTBody‘).html(‘还没有附件,请先添加‘);
65                     }
66
67                     self.loading = false; //加载完成
68                 },
69                 error:function(data){
70                     self.loading = false; //加载完成
71                 }
72             });
73
74         }
75
76     };
77
78     return X;
79 },{
80     requires: [
81         ‘core‘,
82         ‘io‘,
83         ‘xtemplate‘
84     ]
85 });

html部分:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>下拉加载数据</title>
    <link rel="stylesheet" href="http://g.tbcdn.cn/tb/global/2.9.1/global-min.css">
    <script src="http://g.tbcdn.cn/??kissy/k/1.4.2/seed-min.js"></script>
    <style>
        .file-tab{
            width:500px;
            height: 200px;
            overflow-y: scroll;
        }
        .table{
            width:100%;
        }
        .table td, .table th{
            height: 25px;
        }
        .more-load{
            height:5px;
        }
    </style>
</head>
<body>

<div class="file-tab clearfix J_FileTable">
    <table class="table">
        <thead>
        <tr>
            <th><input type="checkbox" name="fileCheckAll" class="J_FileCheckAll"></th>
            <th>文件名</th>
            <th>大小</th>
            <th>上传时间</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody class="J_FTBody">
        <tr>
            <td>
                <input type="checkbox" name="fileCheck" class="J_FileCheck" value="398222" />
            </td>
            <td>千牛云盘操作指南.docx
                <a href="" class="btnLabel J_FilePreview">预览</a>
            </td>
            <td>531K</td>
            <td>2014-9-2 15:30:42</td>
            <td>
                <span class="btnLabel J_FileDownload">下载</span>
            </td>
        </tr>
        </tbody>
    </table>
    <div class="more-load J_MoreLoad"></div>
</div>

<script src="load.js"></script>
<script>
    KISSY.use(‘load‘,function(S,Load){
        Load.init();
    })
</script>
</body>
</html>

时间: 2024-08-05 07:17:23

下拉滚动加载更多数据的相关文章

微信小程序 - (下拉)加载更多数据

注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'> <view class='tables center' wx:for="{{ranklist}}" wx:for-index="idx" wx:key="prototype"> <view class='stage-rank

wap 往下拉自动加载更多数据

var stop=true; $(window).scroll(function(){ totalheight = parseFloat($(window).height()) + parseFloat($(window).scrollTop()); if($(document).height() <= totalheight){ if(stop==true){ stop=false; $.post("http://www.lovexm.com/test.php", {start

Android UI--自定义ListView(实现下拉刷新+加载更多)

http://blog.csdn.net/wwj_748/article/details/12512885 Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就是不健全的.因为小巫近期要开发新浪微博客户端,需要实现ListView的下拉刷新,所以就想把这个UI整合到项目当中去,这里只是一个demo,可以根据项目的需要进行修改. 就不要太在乎界面了哈:

Android Demo 下拉刷新+加载更多+滑动删除

小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第一时间掌握最新消息,加载更多是什么nie,简单来说就是在网页上逛淘宝的时候,我们可以点击下一页来满足我们更多的需求,但是在手机端就不一样了,没有上下页,怎么办nie,方法总比困难多,细心的小伙伴可能会发现,在手机端中,有加载更多来满足我们的要求,其实加载更多也是分页的一种体现.小伙伴在使用手机版QQ

angularjs 滚动加载更多数据

下面的例子只是为了简单记录怎么使用angularjs来实现滚动加载数据,具体的还是需要具体看待: Javascript部分的controller app.controller('AnalysizerCtrl', ['$scope', '$timeout', '$window',     function ($scope, $timeout, $window) {             $scope.showData = false;                 $scope.isLoadi

uni-app下拉刷新加载刷新数据

onPullDownRefresh 监听该页面用户下拉刷新事件 需要在 pages.json 里 开启 enablePullDownRefresh "globalStyle": { } 当处理完数据刷新后,uni.stopPullDownRefresh 可以停止当前页面的下拉刷新 uni.startPullDownRefresh(OBJECT) success Function 否 接口调用成功的回调 fail Function 否 接口调用失败的回调函数 complete Funct

js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据

防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如果时间内又执行了该操作则延长时间重新开始计算 /* 不做处理input触发keyup事件 */ /* 输入快的话会出现输出结果多次重复 */ window.onload = function () { let obj = document.getElementById('input') obj.ad

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前,先把实现的基本原理说一下.当夜幕下拉到底部的时候,js可以判断滚动条的位置,到达底部触发js方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx文件请求数据源,得到json格式的数据源.然后,遍历json数据源,拼接一个li标签,再填充到页面上去. 首先,我们来做个简单的html页面