做一个移动端向上滑动加载更多数据的案例,其实不难,这里没用到插件,大家可以参考下。

大家用浏览器看效果的话,调整到手机模式。代码如下:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>h5微网页向上滑动屏幕加载更多数据</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body >
<table style="font-size:100px">
<tr>
<td>测试数据1</td>
</tr>
<tr>
<td>测试数据2</td>
</tr>
<tr>
<td>测试数据3</td>
</tr>
<tr>
<td>测试数据4</td>
</tr>
<tr>
<td>测试数据5</td>
</tr>
<tr>
<td>测试数据6</td>
</tr>
<tr>
<td>测试数据7</td>
</tr>
<tr>
<td>测试数据1</td>
</tr>
<tr>
<td>测试数据2</td>
</tr>
<tr>
<td>测试数据3</td>
</tr>
<tr>
<td>测试数据4</td>
</tr>
<tr>
<td>测试数据5</td>
</tr>
<tr>
<td>测试数据6</td>
</tr>
<tr>
<td>测试数据7</td>
</tr>
</table>
<script type="text/javascript" src="/demo/js/jq.js"></script>
<script>
$(document).bind("scroll", srcollEvent);
/*touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。
touchend事件:当手指从屏幕上离开的时候触发。
touchcancel事件:当系统停止跟踪触摸的时候触发。*/
$(document).bind("touchstart", startEvent).bind("touchmove", moveEvent).bind("touchcancel", stopEvent).bind("touchend", stopEvent);
var isScrollStop = true; //页面是否停止滚动 防止屏幕有滑动但还没到底部就开始加载数据
var isMoveDown = false; //防止手指向上滑动屏幕开始加载数据
var isLoading = false; //防止异步请求数据未返回到前端的时候重复提交请求
var isMoved = false; //手指是否在滑动屏幕 防止出现手指触摸屏幕而没有滑动就加载数据
var startY = 0;
var startX = 0;
function srcollEvent() {
if ($(document).scrollTop() > 0) {
isScrollStop = false;
}
//如果是左右滑动异步加载数据就用下面的代码
/*
if ($(document).scrollLeft() > 0) {
isScrollStop = false;
}*/
}
function startEvent() {
startY = event.targetTouches[0].clientY;
//如果是左右滑动加载数据就用下面的代码
//startX = event.targetTouches[0].clientX;
isScrollStop = true;
isMoved = false;
isMoveDown = false;
}
function moveEvent() {
var Y = event.targetTouches[0].clientY;
if (startY > Y) {
isMoveDown = true;
} else {
isMoveDown = false;
}
//如果是左右滑动加载数据就用下面的代码
/*var X = event.targetTouches[0].clientX;
if (startX > X) {
isMoveDown = true;
} else {
isMoveDown = false;
}*/
isMoved = true;
}
function stopEvent() {
if (isScrollStop && isMoved && !isLoading && isMoveDown) {
console.log("分页加载");
loadData();
}
}
var index = 0;
function loadData() { //模拟向后台异步加载数据
isLoading = true; //异步加载数据之前先设置为正在等待数据
$("table").append("<tr><td>异步加载数据" + index + "</td></tr>");
$("table").append("<tr><td>异步加载数据" + (index+1) + "</td></tr>");
$("table").append("<tr><td>异步加载数据" + (index+2) + "</td></tr>");
$("table").append("<tr><td>异步加载数据" + (index+3) + "</td></tr>");
$("table").append("<tr><td>异步加载数据" + (index+4) + "</td></tr>");
$("table").append("<tr><td>异步加载数据" + (index+5) + "</td></tr>");
//此时数据已返回到前端
index+=5;
isLoading = false;
isMoved = false;
}
function sleep() {
var t1 = new Date();
var t2 = new Date();
while ((t2 - t1) < 3000) {
t2 = new Date();
}
}
</script>
</body>
</html> 




网友评论文明上网理性发言 已有0人参与
发表评论: