向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]
快速浏览更多在线 Demo
想查看源代码,可以自行F12,或在github中直接查看源码,或者欢迎直接留言。
/****
desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码
ajaxdata_url ajax异步的URL 如data.php
page_val_name ajax异步的URL中的页码参数名 如pageno
page_no 初始加载页码,默认1 [如2,则与前面两参数结合为data.php?pageno=2]
is_lazyload 是否开启懒加载
page_count 总页数
empty_msg 没有数据的时候提示(可传输图片)
ending_msg 最大页码显示提示
***/
$.fn.list_data = function (options) {
//参数
var This = $(this);
var flag = false;//flag为false时为初次加载,防止不断加载
var defaults = {
ajaxdata_url: '',
page_val_name: 'current',
page_no: 1,
page_count: '',
is_lazyload: true,
loading_msg: '加载中...',
empty_msg: '没有相关数据!',
ending_msg: '没有更多数据了!'
};
var opt = $.extend(defaults, options) //没有数据的提示语
if (opt.page_count <= 0) {
This.html("<div class='ui-no-msg'>" + opt.empty_msg + "</div>");
return true;
} //获取页码,暂时不会用到
var get_return_page = function () {
/*var url = location.href;
var page = '';
if (url.indexOf("#") > 0) {
var arr = url.split("#");
var pagestr = arr[1];
if (pagestr.indexOf("_") > 0) {
var arr2 = pagestr.split("_");
var page = arr2[0];
}
}
if (page == '' || page == undefined) {
return 1;
} else {
return page;
}*/
return opt.page_no;
} //基础参数
var page = get_return_page() * 1;
var page_up = page;
var page_down = page; //异步加载数据
var loadmore = function (page, pos) {
var loading = "<div class='ajax-loading'>" + opt.loading_msg + "</div>";
$.ajax({
type: "GET",
url: opt.ajaxdata_url + "&" + opt.page_val_name + "=" + page,
beforeSend: function () {
$(".ajax-loading").remove();
$(".ui-no-msg").remove();
if (pos == 'before') {
$(loading).insertBefore(This);
} else {
$(loading).insertAfter(This);
}
$(".ajax-loading").show();
flag = true;
},
dataType: "html",
error: function () {
//This.html("<div class='ui-no-msg'>数据异常,请刷新重试!</div>");
$("<div class='ui-no-msg'>数据异常,请刷新重试!</div>").appendTo(This);
$(".ajax-loading").remove();
},
success: function (content) {
flag = false;
content = $.parseHTML(content);
if (pos == 'before') {
$(content).prependTo(This);
} else {
$(content).appendTo(This);
}
$(".ajax-loading").remove();
$(".ui-no-msg").remove(); //是否开启懒加载
if (opt.is_lazyload == true) {
lazyLoadImgs(This);
}
} });
} //懒加载
function lazyLoadImgs(e) {
e.find("img").lazyload({
effect: "show",
event: "sporty"
});
var timeout = setTimeout(function () { e.find("img").trigger("sporty") }, 500);
} //初始加载
if (flag == false) {
loadmore(page, 'after'); $(window).scroll(function () {
var scrollTop = $(this).scrollTop();
var scrollHeight = $(document).height();
var windowHeight = $(this).height(); //滚动到顶部
if (scrollTop == 0) {
if (page_up > 1) {
page_up--;
loadmore(page_up, 'before');//如不需要向上滚动加载,则注释掉此行
}
} else {
//滚动到底部
if (scrollTop + windowHeight >= (scrollHeight - 200)) {
if (page_down < opt.page_count) {
page_down++;
loadmore(page_down, 'after');
} else {
$(".ajax-ending").remove();
$("<div class='ajax-ending'>" + opt.ending_msg + "</div>").appendTo(This);
$(".ajax-ending").delay(2000).hide();
}
}
}
});
} }
使用方法
$("#obj").list_data({
ajaxdata_url : data.php,
page_count : 100,
page_val_name: 'current_page',
page_no: 2,
});
向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]的更多相关文章
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向
很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷 ...
- mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉
空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...
- js 前端实现下拉刷新 上拉加载
效果 css html,body{ height:100%; // 其他界面未设置html 无法监听scroll } /* 下拉刷新 */ .refresh-loading { transition: ...
- vue.js移动端app实战4:上拉加载以及下拉刷新
上拉加载以及下拉刷新都是移动端很常见的功能,在搜索或者一些分类列表页面常常会用到. 跟横向滚动一样,我们还是采用better-scroll这个库来实现.由于better已经更新了新的版本,之前是0.几 ...
- 利用iscroll实现上拉加载下拉刷新
1.首先引用isScroll插件 说明:页面加载时初始化isScroll,然后调用pullDownAction()和pullUpAction(),每次切换tab时,只需要对pullDownAction ...
- react-native 自定义 下拉刷新 / 上拉加载更多 组件
1.封装 Scroller 组件 /** * 下拉刷新/上拉加载更多 组件(Scroller) */ import React, {Component} from 'react'; import { ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- DCloud-MUI:下拉刷新、上拉加载
ylbtech-DCloud-MUI:下拉刷新.上拉加载 1. 下拉刷新返回顶部 0. http://dev.dcloud.net.cn/mui/pulldown/ 1. 概述 为实现下拉刷新功能,大 ...
- mui的上拉加载更多 下拉刷新 自己封装的demo
----------------------------------------------- 这是一个非常呆萌的程序妹子,深夜码的丑代码------------------------------- ...
随机推荐
- JavaScript - 原型
一切皆为对象 殊不知,JavaScript的世界中的对象,追根溯源来自于一个 null 「一切皆为对象」,这句着实是一手好营销,易记,易上口,印象深刻. 万物初生时,一个null对象,凭空而生,接着O ...
- javascript 获取滚动条高度+常用js页面宽度与高度
/******************** * 取窗口滚动条高度 ******************/function getScrollTop(){ var scrollTop=0; ...
- IOS中div contenteditable=true无法输入
在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是无法输入.加一个样式-webkit-user-sele ...
- Appcan——Box
Box架构 ub….. Box架构元素空间大小分配比例 ub-f……. Ub-f1,ub-f2,ub-f3……. Box架构元素垂直方向的位置排列 ub-ac,ub-ae… -webkit-box-a ...
- 检查日期是否为节假日api
http://www.easybots.cn/api/holiday.php?d=20160104 返回值: 工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2: 检查一个日期是否 ...
- git clone出现的error: The requested URL returned error: 401 Unauthorized
error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.net/.. ...
- ASP.NET运作流程
当我们在浏览器输入域名访问服务器资源时,会向服务器发送Http请求,并经由IIS处理后,交由ASP.NET托管程序处理,进入ASP.NET管道.在IIS内部如何处理我们不需要深入去了解,在ASP.NE ...
- setprecision **fixed
#include <iostream> #include <iomanip> using namespace std; int main( void ) { const dou ...
- linux Mint 安装apache2
sudo apt-get install apache2 y 启动apache2 /etc/init.d/apache2 restart 浏览器输入localhost看看是否访问正常 apache2 ...
- 原生JavaScript实现Ajax
var getXmlHttpRequest = function() { if (window.XMLHttpRequest) { //主流浏览器提供了XMLHttpRequest对象 return ...