向上滚动或者向下滚动分页异步加载数据(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
----------------------------------------------- 这是一个非常呆萌的程序妹子,深夜码的丑代码------------------------------- ...
随机推荐
- EBS中加载FORM使用的JavaBean的JAR包
1.SSH端,APP用户登录: 2.输入env,确定环境变量名称FORMS_WEB_CONFIG_FILE: 3.定位模板文件: $AD_TOP/bin/adtmplreport.sh con ...
- 第3月第15天 afconvert lame
1. //CAF 转换成MP3 (可以) afconvert -f mp4f -d aac -b 128000 /Users/amarishuyi/Desktop/sound1.caf/Users/a ...
- C和指针 第十五章 文件I/O
stdio.h中包含了声明FILE结构 struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指 ...
- CentOS 7 环境配置
1. 代理设置 http://blog.csdn.net/fwj380891124/article/details/42168683 2. xfce 桌面安装 http://blog.csdn.net ...
- PYTHON lambda表达式
lambda相当于def定义函数 一一对应
- Erlang C1500K长连接推送服务-性能
Whatsapp已经使用Erlang在生产环境跑到96GB内存单机 3M长连接,参加:WhatsApp的Erlang世界.毕竟业务级别能达到Whatsapp那样极少,现在只有千万级,单机太多挂一台影响 ...
- C# webBrowser控件禁用alert,confirm之类的弹窗解决方案
同样的代码,我尝试了很多次都没有成功.最后终于成功了,是因为我没有在正确的事件里面调用这段代码. private void InjectAlertBlocker() { HtmlElement hea ...
- 设计模式--享元模式Flyweight(结构型)
一.享元模式 在一个系统中如果有多个相同的对象,这些对象有部分状态是可以共享的,我们运用共享技术就能有效地支持大量细粒度的对象. 二.例子 举个围棋的例子,围棋的棋盘共有361格,即可放361个棋子. ...
- Bootstrap.css 中请求googleapis.com/css?family 备忘录
问题描述: Web中引入bootstrap.css中头部有访问Google服务器的请求 @import url("//fonts.googleapis.com/css?family=Open ...
- arm_GPIO_简单编程例题
题目 分析下面的汇编led.s,查看S5PV210手册,说明程序的功能,和最终的运行结果,以及相关的硬件原理图,S5PV210手册可以在教学资源里的学习资料文件夹中下载. .equ GPH3CON ...