RE:通过移动端滑动手势实现数据加载



<div class="myweekly">
<!--刷新图标,当有新内容加载时,显示该图标,加载完成后图标隐藏-->
<div id="refreshTop"></div>
<div id="pullup">下拉显示上一周</div> <form role="form" class="info-box my-weekly-box" id="show">
<!--中间刷新区域-->
</form> <div id="pulldown">上拉显示下一周</div>
<!--刷新图标,当有新内容加载时,显示该图标,加载完成后图标隐藏-->
<div id="refreshbottom"></div>
</div>
var mytouch = (function() {
//先设置相关变量
var x, y,
doc = document,
imgWidth=doc.getElementById("show").clientWidth,//中间显示区域
pullup = doc.getElementById("pullup"),//顶部区域
pulldown = doc.getElementById("pulldown"),//底部区域
isMoved = true; //布尔值,用作阻断事件多次触发
return{ //返回对象
tStart: function(event) { //设置动态参数来获取最开始时触摸到屏幕的坐标信息
if (isMoved) {
var touches = event.targetTouches;//使用touches接收参数位于当前对象触摸点的集合列表(如x轴、y轴坐标数据信息等)
if (touches.length == 1) {//获取当前对象所有触摸点的列表,判断长度即判断是有几个触摸点。即当有一个手指最初触摸屏幕时获取坐标
x = touches[0].pageX;
y = touches[0].pageY;
}
isMoved = false; //设置isMoved的值,之后满足条件才会触发后面的滑动事件
}
},
var mytouch = (
function() {
…
return{
tStart: function(event){
…
},
…
}
})();
tMove: function(event) { //手指在屏幕上移动时触发上/下滑事件
if (!isMoved) { //只有手指第一次在屏幕上滑动时,并且满足响应条件,才触发上/下滑事件
var touches = event.targetTouches;
if (touches.length == 1) { //一个手指在屏幕上
var x1 = touches[0].pageX, //移动到的坐标
y1 = touches[0].pageY;
if ((y1 - 80) > y ){ //下滑手势
isMoved = true; //不设置该变量,会导致多个touchmove事件
doc.getElementById("refreshTop").style.display = "block";//下滑刷新加载页面,显示顶部刷新图标
doc.getElementById("pullup").style.display = "none";//隐藏 “下滑显示上一周”的文字提示
setTimeout(function() { //开始获取数据
doc.getElementById("refreshTop").style.display = "none";//隐藏顶部刷新图标”
doc.getElementById("pullup").style.display = "block";//显示 “下滑显示上一周”的文字提示
nw --; //这里的 nw 为周数的值,在这里也可以把它当做索引值,通过改变这个变量,改变获取的JSON数据信息。
//开始使用JQueryAjax获取后台数据,如果为纯前端,可直接用 innerHTML属性输出页面内容
$.getJSON("/api/weekly.php?week="+ nw +"&session="+session_id,function(json){
if(nw<1){ //判断翻到第一页之后,不能够继续滑动翻页了。
$("#show").html('<div><div>已经翻到第一页了!</div></div>');
nw = 0;//如果不设置该变量,一直上翻的话,nw会为负数,需要阻止进程。
}
else{
if(json.status=="已提交" && json.url!="无"){//根据后台接口的返回值判断要输出的内容
$("#show").html("");//避免刷新区域有多余html,先做空白刷新。
$("#show").html(
'<div><label>周数:</label><span id="nw">'+ json.week + '周</span></div>' +
'<div><label>提交时间:</label><time id="time">'+ json.time + '</time></div>' +
'<div><label>本周完成:</label><div>'+ json.finished + '</div></div>' +
'<div><label>所遇到问题:</label><div>'+ json.problem + '</div></div>' +
'<div><label>下周计划:</label><div id="plan">'json.plan + '</div></div>' +
'<div><label>作品链接:</label><div>'+ json.url + '</div></div>'
);//输出JSON信息,点出JSON对象对应的属性值。
}
//获得其他返回值时,输出其他内容。
……
else{……}
}
return false;
});
}, 500);
}
if ((y1 + 80) < y ){ //上滑
isMoved = true;
doc.getElementById("refreshbottom").style.display = "block";//下滑刷新加载页面,显示顶部刷新图标
doc.getElementById("pulldown").style.display = "none";//隐藏 “下滑显示上一周”的文字提示
setTimeout(function() {
doc.getElementById("refreshbottom").style.display = "none";
doc.getElementById("pulldown").style.display = "block";
nw ++;
$.getJSON("/api/weekly.php?week="+ nw +"&session="+session_id,function(json){
if(nw>offsetDays+1 && json.status =="未提交"){//避免出现其他状态,因为在该项目中请假可以请到未来的周数
nw=offsetDays+2;//设置nw的值
$("#show").html('<div><div>已经翻到最后一页了!</div></div>');
}
else{……
}, 500);
}
}
}
},
};
})();
document.addEventListener("touchstart", mytouch.tStart, false);
document.addEventListener("touchmove", mytouch.tMove, false);
return false;
RE:通过移动端滑动手势实现数据加载的更多相关文章
- loading数据加载的6种形式
数据加载的几种形式及对应的交互设计 1.全屏加载 多出现在H5页面,例如微信的文章详情页.全屏加载的特点是数据一次性加载完成,内容加载完成之前界面都会停留在loading界面.进度条和有趣的动画设计, ...
- python多种格式数据加载、处理与存储
多种格式数据加载.处理与存储 实际的场景中,我们会在不同的地方遇到各种不同的数据格式(比如大家熟悉的csv与txt,比如网页HTML格式,比如XML格式),我们来一起看看python如何和这些格式的数 ...
- Android Volley和Gson实现网络数据加载
Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...
- 移动端下拉刷新、加载更多插件dropload.js(基于jQuery/Zepto)
移动端下拉刷新.加载更多插件dropload.js(基于jQuery/Zepto) 原文:http://www.grycheng.com/?p=1869 废话不多说,先让大家看一下案例效果: DEMO ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- echarts ajax数据加载方法
一: <!-- 引入 echarts.js --> <script type="text/javascript" src="echarts.min.js ...
- 移动端web页面上滑加载更多功能
背景介绍: 开发企业微信的一个应用,实现在企业微信中调用自己程序页面,页面加载多模块数据,向下滑加载更多,等等等等,一波三折 然后很早就成功了是这样实现的: html: <div id=&quo ...
- Android 7.0 Gallery图库源码分析3 - 数据加载及显示流程
前面分析Gallery启动流程时,说了传给DataManager的data的key是AlbumSetPage.KEY_MEDIA_PATH,value值,是”/combo/{/local/all,/p ...
- android中滑动SQLite数据库分页加载
今天用到了android中滑动SQlit数据库分页加载技术,写了个测试工程,将代码贴出来和大家交流一下: MainActivity package com.example.testscrollsqli ...
随机推荐
- Springboot 学习笔记 ①
前言 之前一直在寻找Springboot的学习资料,终于得偿所愿...那么,先给自己定一个小目标 - 能够使用Springboot这套架构来搭建自己的服务. 准备阶段 1. 开发环境 开发环境其实还是 ...
- Javascript写的一个可拖拽排序的列表
自己常试写了一个可拖拽进行自定义排序的列表,可能写的不太好,欢迎提供意见. 我的思路是将列表中的所有项都放进一个包裹层,将该包裹层设为相对定位,每当点击一个项时,将该项脱离文档并克隆一份重新添加到文档 ...
- [bzoj1066] [SCOI2007] 蜥蜴 - 网络流
在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个 ...
- MySQL or MariaDB 错误解决方法之报错代码1045
phpMyAdmin登录报错:mysqli_real_connect(): (28000/1045): Access denied for user 'root'@'localhost' (using ...
- lambda表达式杂谈
var personInfo = [ { name: "张三", age: 20, gender: "male" }, { name: "李四&quo ...
- DotNetCore跨平台~一起聊聊Microsoft.Extensions.DependencyInjection
写这篇文章的心情:激动 Microsoft.Extensions.DependencyInjection在github上同样是开源的,它在dotnetcore里被广泛的使用,比起之前的autofac, ...
- 【JAVA零基础入门系列】Day8 Java的控制流程
什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...
- Java面向对象 IO (三)
Java面向对象 IO (三) 知识概要: (1)IO 流的操作规律 (2)异常日志信息IO处理 ...
- 安装Extended WPF Toolkit
Extended WPF Toolkit 可以说是WPF Toolkit 的一个补充,也包含了许多WPF 控件供开发者使用.本篇将介绍Extended WPF Toolkit 1.4.0 中新增的一些 ...
- HTML5之window.applicationCache对象
不知道离线缓存技术的可以参照上一篇文章: HTML5之appcache语法理解/HTML5应用程序缓存/manifest缓存文件官方用法翻译 参考文章 window.applicationCache ...