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 ...
随机推荐
- Java环境配置小记
今年新开Java课程第一步就是-配置环境 博客开坑,就从Java的环境配置开始好了 以下是正式的步骤 首先,从Oracle的官网下载jdk的安装包 点我下载Java SE开发套件 先点接受许可协议,然 ...
- HIT 1917 Peaceful Commission
这道题题意就是给你n对人,一对中编号为x,x+1,给你m对矛盾,表示这两个人不能同时选. 然后就是Two-Sat的模板题了,就是根据对称性,连边,加缩点,最后拓扑排序,求出一组可行解就可以了. #in ...
- Intellij idea史上最简单的教程之Linux下安装与破解Intellij idea2017
一.前言 这一节我们介绍在Linux下如何安装与破解Intellij idea2017.现在有很多公司开发环境都是Linux,所以掌握在Linux环境下使用Idea办公也是咱们必须得掌握的技能. 记住 ...
- php版本的选择
简单来说non-thread-safe 非 线程安全 与IIS 搭配环境,thread-safe 线程安全 与apache 搭配的 环境这个大家一定要注意,否则用错了版本,apache是无法启动的,另 ...
- 图片与字符串(base64编码)的转化
package com.demo; import java.util.*; import java.io.*; import sun.misc.BASE64Decoder; import sun.mi ...
- C#枚举中使用Flags特性
如果对一个值可以包含多个,那么可以使用枚举,加上Flags 本文告诉大家如何写一个 Flags. 在写前,需要知道一些基础知识,取反.或.与,如果不知道的话,请去看看基础. 当然,这些太复杂了,我也不 ...
- 张高兴的 Windows 10 IoT 开发笔记:三轴数字罗盘 HMC5883L
注意,数据不包含校验,准确的来说我不知道怎么校验,但方向看起来差不多是对的... GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tre ...
- visio流程图软件
microsoft visio 2013 64位 链接:http://pan.baidu.com/s/1bnjWa1T 密码:9ylc 标准图表 使用现有的数据,您可以生成许多种类的 Visio 标准 ...
- C#编译器和CLI的安装
为了完成C#程序编译和运行,需要安装代码对应版本的编译器和CLI(公共语言框架)平台. (部分内容摘自<C#本质论>) 针对主流的CLI平台(Microsoft .NET),有两种安装方案 ...
- ~.NET下国际化i18n简单示例
因业务需要,后台站点需要出一个国际化的解决方案,偷懒后用微软自带资源文件暂时解决.废话不多说,进入正题. 第一步:在项目菜单下选择添加国际化资源文件夹. 第二部:添加完毕之后,添加各语言版本下的资源信 ...