做下笔记,:移动端实现上拉加载更多,其实是数据的分段加载,在这里为了做测试我写了几个json文件作为分段数据:

方式一:使用dropload.js;

配置好相关参数及回调函数就可使用:代码如下

var paging = 1;//页码数
//初始化展示第一页数据
$.ajax({
type: 'GET',
url: "code"+paging+".json",
dataType: 'json',
success: function(data){
var result = '';
for(var i = 0; i < data.length; i++){
result += "<tr><td>"+data[i].qy+"</td><td>"+data[i].num+"</td><td>"+data[i].total+"</td></tr>";
}
$('#code-table').append(result);
}
});
// dropload函数接口设置
$(".code-table").dropload({
scrollArea : window,
domDown : {
domClass : 'dropload-down',
// 滑动到底部显示内容
domRefresh : '<div class="dropload-refresh">↑上拉加载更多</div>',
// 内容加载过程中显示内容
domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>',
// 没有更多内容-显示提示
domNoData : '<div class="dropload-noData">无更多数据</div>'
},
loadDownFn : function(me){
paging++; // 每次请求,页码加1
$(".code-table").css("height","auto");//容器初始化时我设置了高度,当加载更多时应该去掉,让内容撑开
$.ajax({
type: 'GET',
url: "code"+paging+".json",  //分段模拟数据,json文件
dataType: 'json',
success: function(data){
// data = JSON.parse(data);
var result = '';
// 选择需要显示的数据 拼接 DOM
for(var i = 0; i < data.length; i++){
result += "<tr><td>"+data[i].qy+"</td><td>"+data[i].num+"</td><td>"+data[i].total+"</td></tr>";
}
if(data.length<9){
// 再往下已经没有数据
// 锁定
me.lock();
// 显示无数据
me.noData();
}
// 为了测试,延迟1秒加载
setTimeout(function(){
// 加载 插入到原有 DOM 之后
$('#code-table').append(result);
// 每次数据加载完,必须重置
me.resetload();
},1000);
},
// 加载出错
error: function(xhr, type){
alert('Ajax error!');
// 即使加载出错,也得重置
me.resetload();
}
});
},
threshold : 50
});

dropload下拉刷新等更多详情可参考:http://www.jianshu.com/p/65c718093d44;

方法二:利用移动端touch事件(貌似originalEvent事件需要jq2.0+版本)自定义方法(欢迎纠正);

方法代码:

        var $Od=$(document);//触摸对象
2        var pIndex=1; //页码数
var pSize=6; //每页数据个数
var flag=1; //为了防止重复滑动导致数据错乱,我设置了一个标记,为1时上拉有效,为0无效
    function sliderMore(){
//触摸事件开始
$Od.on('touchstart.mo',function(ev){
//获取手指触摸列表,[0]代表第一个像素点
var touch = ev.originalEvent.changedTouches[0];
var disy1 = touch.pageY; //记录当前位置
//开始滑动
$Od.on('touchmove.mo',function(ev){ })
//抬起手指结束事件
$Od.on('touchend.mo',function(ev){
if(flag){
//再次获取手指触摸列表,[0]代表第一个像素点,并记录位置
var touch = ev.originalEvent.changedTouches[0];
var disy2 = touch.pageY;
//判断条件为上拉
if((disy1-disy2)>20){
flag=0;//开始上拉设置重复上拉无效 pIndex++;//每次请求页码+1
                         $('#tips').html("加载中..."); //样式,可自定义
//下面是本人写的ajax请求数据,可自定义
var startVal = $("#dstart").val();
var endVal = $("#dend").val();
var data = {
"method":"get_activated_code_info",
"start_time":startVal,
"end_time":endVal,
"page_index":pIndex,
"page_size":pSize
};
data = JSON.stringify(data);
ajaxCall(data,function(result){
//为了测试,延时展现数据效果
setTimeout(function(){
//将请求结果展现出来
for(var i in result.items){
addItem(result.items[i].company_name,result.items[i].code_activated,result.items[i].activated_amount);
}
$('#tips').html("上拉加载更多");
//判断请求的结果有没有数据,没有就改变提示内容
if(result.items.length==0){
console.log(245);
$('#tips').html("无更多数据");
}
},500);
//要在数据展示出来之后,再将flag设为1,所以这里时间1000>500,这里可以只要一个定时器(就不改了),可以遍历数据不需放在定时器里,遍历用个变量保存,然后定时一次加入容器同时flag=1;
setTimeout(function(){
flag=1;
},1000);
});
}
}
})
})
}
sliderMore();

移动端实现上拉加载更多(使用dropload.js vs js)的更多相关文章

  1. 原生js移动端touch事件实现上拉加载更多

    大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: //获取要操作的元素 var objSection = document.ge ...

  2. 移动端touch事件 || 上拉加载更多

    前言: 说多了都是泪,在进行项目开发时,在上拉加载更多实现分页效果的问题上,由于当时开发任务紧急,所以就百度找了各种移动端的上拉下拉 实现加载更多的插件.然后就留下了个坑:上拉加载的时候会由于用户错误 ...

  3. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果

    最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

  4. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多

    最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

  5. 【Web】移动端下拉刷新、上拉加载更多插件

    移动网站中常常有的功能:列表的下拉刷新.上拉加载更多 本例介绍一种简单使用的移动端下拉刷新.上拉加载更多插件,下载及参考地址:https://github.com/ximan/dropload 插件依 ...

  6. 移动端h5列表页上拉加载更多

    背景 上星期公司要求做一个回收书籍的h5给安卓用,里面有一个功能是回收记录列表.设计师那边出的稿子是没有要求分页或者是上拉刷新的,但是众所周知,列表页数据很多的情况下,h5加载是很慢的.所以我一开始是 ...

  7. vue2.0 移动端,下拉刷新,上拉加载更多插件,修改版

    在[实现丰盛]的插件基础修改[vue2.0 移动端,下拉刷新,上拉加载更多 插件], 1.修改加载到尾页面,返回顶部刷新数据,无法继续加重下一页 2.修改加载完成文字提示 原文链接:http://ww ...

  8. vue移动端上拉加载更多

    LoadMore.vue <template> <div class="load-more-wrapper" @touchstart="touchSta ...

  9. mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉

    空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...

随机推荐

  1. Memcached 查看列出所有key方法

    Memcached没有一个比较简单的方法可以直接象Redis那样keys *列出所有的Session key,并根据key get对应的session内容,但是还是可以查看的 memcached 查看 ...

  2. String 在内存中如何存储的

    基本数据类型由于长度固定,且需要空间比较少,所以直接存储在栈中:而对象比较大,所以栈中只存储一个4btye的引用地址(逻辑地址). java中对String对象特殊对待,所以在heap区域分成了两块: ...

  3. Optimizing Your App for Today’s Internet

    这个 session 的主讲人感觉是一个很典型的美国人,年纪也不小. 网络现状 四十亿人在使用因特网,大概占有世界人口的一半.上网人数的增长在减缓. 但是网络仍然在增长.增长点主要在物联网.第三世界国 ...

  4. git 查看提交记录

    查看提交的内容 -p 选项,同时在 - 后加数字限制一下数目 git log -p -2. commit 500eeadd71a21f1166803e12a792bfa86f4ca784 (HEAD ...

  5. vue-cli新建vue项目安装axios后在IE下报错

    使用脚手架新建了一个vue项目,可以在IE9+浏览器运行,但是在添加了axios后,在IE下就报错了 首先是安装axios,在命令行执行: $ npm install axios -s //执行命令, ...

  6. easyui datagrid里的复选框置灰方法

    easyui datagrid里的复选框置灰方法: $('.datagrid input').prop('disabled',true);//复选框置灰

  7. c#连接oracle遇到的问题

    1.最近在做项目,发现一个很有意思的现象.我在项目中引用System.Data.OracleClient进行oracle库的远程连接,一直出错.后来无意中,将.net framework 4.0框架改 ...

  8. 【jQuery源码】preFilter

    preFilter: { "ATTR": function( match ) { //属性名解码 match[1] = match[1].replace( runescape, f ...

  9. Postman—脚本介绍

    前言 Postman包含一个基于Node.js的强大的运行时环境,它允许我们为请求和集合添加动态行为.这使的我们可以编写测试用例,构建可包含动态参数的请求,在请求之间传递数据等等. 我们可以在流程中以 ...

  10. javascript快速入门1--JavaScript前世今生,HelloWorld与开发环境

    JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌入式脚本语言. Cmm背后的理念很简单:一个足够强大可以替代宏 ...