移动端实现上拉加载更多(使用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> ...
随机推荐
- iOS-CocoaPods安装及使用
1. 安装 Ruby 对于iOS开发者,CocoaPods是最方便的第三方管理工具了,但是怎么安装CocoaPods呢,安装CocoaPods之前,要确保mac已经安装上Ruby,但在安装Ruby时, ...
- hanlp的基本使用--python(自然语言处理)
hanlp拥有:中文分词.命名实体识别.摘要关键字.依存句法分析.简繁拼音转换.智能推荐. 这里主要介绍一下hanlp的中文分词.命名实体识别.依存句法分析,这里就不介绍具体的hanlp的安装了,百度 ...
- 开源视频会议bigbluebutton
这是另一个开源视频会议项目,简称bbb 官方网站:http://bigbluebutton.org/ 代码地址:https://code.google.com/p/bigbluebutton/ dem ...
- NoSQL之HBase
http://www.cnblogs.com/LBSer/p/3330383.html 9月初淘宝飞芃做了一个关于HBase的分享,讲的激情飞扬,让听众收益匪浅,现做下简单总结. HBase是一个No ...
- ARP地址解析协议原理
概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...
- 安装Oracle需要调整的linux内核参数
在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-m ...
- [转]C#进阶系列——WebApi 接口参数不再困惑:传参详解
本文转自:http://www.cnblogs.com/landeanfen/p/5337072.html#_label1_2 阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作 ...
- HTML5中Access-Control-Allow-Origin解决跨域问题
www.111cn.net 更新:2015-01-07 编辑:flyfox 来源:转载 跨域在开发中一些是一个比较常见的问题虽然有json或者xml来解决,现在html5开始流行了,我们可以通过Acc ...
- c#基础学习(0702)之面向对象和方法重写概述
面向对象编程(OOP==>Object-Oriented Programming) OOA:面向对象分析 OOD:面向对象设计 OOAD:面向对象分析与设计 什么是面向对象?一种分析问题的方式( ...
- ASPxGridView控件的基本属性
1.//ASPxGridView前台获取行号 <ClientSideEvents RowClick="function(s, e) { s.GetRowKey(e.visibleInd ...