移动端实现上拉加载更多(使用dropload.js vs js)
做下笔记,:移动端实现上拉加载更多,其实是数据的分段加载,在这里为了做测试我写了几个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)的更多相关文章
- 原生js移动端touch事件实现上拉加载更多
大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: //获取要操作的元素 var objSection = document.ge ...
- 移动端touch事件 || 上拉加载更多
前言: 说多了都是泪,在进行项目开发时,在上拉加载更多实现分页效果的问题上,由于当时开发任务紧急,所以就百度找了各种移动端的上拉下拉 实现加载更多的插件.然后就留下了个坑:上拉加载的时候会由于用户错误 ...
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果
最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多
最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...
- 【Web】移动端下拉刷新、上拉加载更多插件
移动网站中常常有的功能:列表的下拉刷新.上拉加载更多 本例介绍一种简单使用的移动端下拉刷新.上拉加载更多插件,下载及参考地址:https://github.com/ximan/dropload 插件依 ...
- 移动端h5列表页上拉加载更多
背景 上星期公司要求做一个回收书籍的h5给安卓用,里面有一个功能是回收记录列表.设计师那边出的稿子是没有要求分页或者是上拉刷新的,但是众所周知,列表页数据很多的情况下,h5加载是很慢的.所以我一开始是 ...
- vue2.0 移动端,下拉刷新,上拉加载更多插件,修改版
在[实现丰盛]的插件基础修改[vue2.0 移动端,下拉刷新,上拉加载更多 插件], 1.修改加载到尾页面,返回顶部刷新数据,无法继续加重下一页 2.修改加载完成文字提示 原文链接:http://ww ...
- vue移动端上拉加载更多
LoadMore.vue <template> <div class="load-more-wrapper" @touchstart="touchSta ...
- mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉
空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...
随机推荐
- 【10】JMicro微服务-API网关
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到9小节 1. Api网关基本特性: Api网关作为对外网提供服务的基本入口,地位类似于NGINX, ...
- easyui 中iframe嵌套页面,大弹窗自适应居中的解决方法。$('#win').window()
easyui 中iframe嵌套页面,大弹窗自适应居中的解决方法.$('#win').window() 以下是左边栏和头部外层遮罩显示和隐藏方法 /*外层 遮罩显示*/ function wrapMa ...
- J02-Java IO流总结二 《概述》
1 流的概念 流是一个信息的通道,通过通道可以访问通道连接的文件对象. 2 流的分类 根据流中数据的流向,可分为输入流和输出流 输入流:从其他的地方流入到程序内存中的,比如InputStream. ...
- IIS 8 配置错误
1) ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed Th ...
- python 把一文件包含中文的字符写到另外文件乱码 UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position
报错的代码是: file2 = open('target.txt','w')for line in open('test.txt'): file2.write(line)原因:文件编码不一致导致解决方 ...
- vue制作小程序--server
服务端代码,开发者工具有提供 指南 https//cloud.tencent.com/document/product/619/11442 参考文档API https://developers.wei ...
- 关于注解Annotation第二篇
写一个注解使用类,如下: public class Test { @Code(author = "mazhi",date="20170611") private ...
- 09 - JavaSE之线程
线程 线程的基本概念 线程是一个程序里面不同的执行路径. 进程与线程的区别 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换开销大. 线程可以看作轻量级的进程,同一类线程共享代码和数据空间 ...
- Spring Boot 的彩色日志
springboot的彩色日志灰常漂亮, 看起来也很舒服. 但是自定义的日志就是一纯白色的, 丑到不行. 所以就copy他的彩色日志来养眼: <!-- 彩色日志 --> <!-- 彩 ...
- Docker挂载主机目录Docker访问出现Permission denied的解决办法
Docker挂载主机目录,访问相应的文件出现Premission denied的权限访问问题, [root@localhost soft]# docker images REPOSITORY ...