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 ...
随机推荐
- unset与unlink
unset() -- 释放给定的变量 详见->http://www.kuqin.com/php5_doc/function.unset.html unlink() --删除文件 常用于用户 ...
- 天上掉Pizza
天上掉Pizza 时间限制: 3 Sec 内存限制: 128 MB提交: 73 解决: 48[提交][状态][讨论版] 题目描述 明明喜欢Pizza,但总是缺钱.有一天,他在报纸上阅读,他最喜爱的 ...
- Python操作excel表格
用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件 注:本篇代码在Python3环境下运行 首先导入两个模块xlrd和xlwt,xlrd用来读取Exc ...
- 单独创建一个Android Test Project 时junit 的配置和使用
现在的集成ADT后Eclipse都可以直接创建Android Test Project 如图所示: 命名后选择你要测试的单元程序,比如我自己准备测试sms,便可以如图所示那样选择 本人新建的测试工程为 ...
- netsh用法
netsh(Network Shell) 是一个windows系统本身提供的功能强大的网络配置命令行工具. 导出配置脚本:netsh -c interface ip dump > c:\inte ...
- 【MVC】会员注册/登录,普通验证,会员名是否注册Ajax验证以及会员邮件验证实现原理
using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentM ...
- Linux系列教程(一)——Linux系统简介
本系列教程将完整的讲解整个Linux相关的知识,这是楼主学完之后重新对Linux知识体系的整理.从最基础的知识开始,对于一个完全不懂Linux系统的人,相信在看完整个系列教程之后,都能对Linux有一 ...
- win10 uwp 打开文件管理器选择文件
本文:让文件管理器选择文件,不是从文件管理器获得文件. 假如已经获得一些文件,那么如何从文件管理器选择这些文件? 使用方法很简单. 从网上拿图来说 打开文件夹自动选择所有文件 首先需要获得文件夹,因为 ...
- mongdb单节点安装方法
mongo单节点环境安装(linux) 安装包 下载地址: (https://www.mongodb.com/download-center) 用户权限/目录 创建 dbuser用户 groupadd ...
- 进程池与线程池(concurrent.futures)
from concurrent.futures import ProcessPoolExecutor import os,time,random def task(n): print('%s is r ...