由于这两天项目用到滚动分页 ,所以写了个处理滚动分页的js类 备用吧当,调用只需
new ScrollPage({...});//配上相应参数就好了。。。
function ScrollPage(config){
this.config = config;
this.defaultLoadingTemplate = "<tr id='default_loading' style='text-align:center'><td style='text-align:center' colspan='6' >努力加载中...</td></tr>";
this.scrollTarget = config.scrollTarget;
this.hasLoad = true;
this.pageNo = config.pageNo ? config.pageNo:1;
this.data = !config.data ? {"pageNo": this.pageNo}:config.data;
this.dataType = config.dataType?config.dataType:"html";
this.url = config.url?config.url:config.getUrl();
this.type = config.type?config.type:"get";
this.appendTarget = config.appendTarget;
this.responseData = "";
this.responseHandler = "";
this.httpCode = 200;
this.hasError = false;
this.loadingTarget = config.loadingTarget?config.loadingTarget:this.defaultLoadingTemplate;
this.before = {};
this.after = {};
this.finally = {};
this.init();
}
ScrollPage.prototype.init = function(){
//张定事件
this.addScrollListener(this);
var obj = this;
//before涵数初始化
if(!this.config.before){//添加默认执行前的拦截器
this.addBefore(function(){
$(obj.appendTarget).after(obj.loadingTarget);
});
}else{
this.addBefore(obj.config.before);////用户自定义的拦截器
}
//after函数初始化
if(!this.config.responseHandler){//默认的处理器
this.addAfter(function(){
$(obj.appendTarget).append(obj.responseData);
obj.increamentPageNo();
})
}else{
this.addAfter(this.config.responseHandler);//用户自定义的拦截器
}
//finally涵数初始化 默认必需处理的
this.addFinally(function(){
var s_top = $(obj.scrollTarget).get(0).scrollTop;
$(obj.scrollTarget).get(0).scrollTop = s_top-5;//往上调一点
$(obj.loadingTarget).hide();
})
//用户自定义的 final
if(this.config.complete){
this.addFinally(this.config.complete)
}
}
ScrollPage.prototype.addScrollListener= function(obj){
$(obj.scrollTarget).scroll(function(){
var targetHight = $(obj.scrollTarget).height();
var scrollHight = $(obj.scrollTarget)[0].scrollHeight;
var scrollTop = $(obj.scrollTarget)[0].scrollTop;
//触底了 要加载数据了
if(scrollTop + targetHight >= scrollHight){
obj.execute(obj);
}
});
};
//设置是否加载了
ScrollPage.prototype.setHasLoad = function(hasLoad){this.hasLoad = hasLoad;};
ScrollPage.prototype.getHasLoad = function(){ return this.hasLoad;};
//post数据
ScrollPage.prototype.setData = function(data){this.data = data;};
ScrollPage.prototype.getData = function(){ return this.data;};
//pageNo+1
ScrollPage.prototype.increamentPageNo = function(){
this.pageNo ++ ;
this.data.pageNo = this.pageNo;
};
ScrollPage.prototype.getPageNo = function(){ return this.pageNo};
//添加请求前的处理器
ScrollPage.prototype.addBefore = function(before){
var key = "before_" + this.before.length;
this.before.key = before;
};
//添加响应后的
ScrollPage.prototype.addAfter = function(after){
var key = "after_" + this.after.length;
this.after.key = after;
};
//添所有最后的处理器
ScrollPage.prototype.addFinally = function(final){
var key = "finally_" + this.finally.length;
this.finally.key = final;
};
ScrollPage.prototype.setResponseData = function(data){this.responseData = data;};
ScrollPage.prototype.getResponseData = function(){ return this.responseData;};
ScrollPage.prototype.setUrl = function(url){this.url = url;};
ScrollPage.prototype.getUrl = function(){ return this.url;};
ScrollPage.prototype.handleBefore = function(){
this.setHasLoad(false);
for(var fun in this.before){
this.before[fun]();
}
}
ScrollPage.prototype.handleAfter = function(){
for(var fun in this.after){
this.after[fun]();
}
this.setHasLoad(true);
}
ScrollPage.prototype.handleFinally = function(){
for(var fun in this.finally){
this.finally[fun]();
}
}
ScrollPage.prototype.handleError = function(){
alert("加载出错");
}
//设置当前页
//查询
ScrollPage.prototype.execute = function(obj){
$.ajax({
url :obj.getUrl(),//ajaxUrl,
type:"post",
data : obj.getData(),
dataType:obj.dataType,
beforeSend:function(){
//开始后打开loading效果
if(!obj.getHasLoad()){
return false;
}
obj.handleBefore();
},
success:function(data){
obj.setResponseData(data);
obj.handleAfter();
},
error:function(){
obj.handleError();
},
complete:function(data){
//结束后清掉loading效果
obj.handleFinally();
}
});
};
分享到:
相关推荐
在现代网页开发中,表格是一种...总结来说,JavaScript滚动分页是一种高效且用户体验良好的分页方式,它可以让用户在滚动查看数据的同时,页面能自动加载更多数据,极大地提高了用户的操作便捷性和页面的数据展示效率。
在本场景中,我们将关注如何使用JavaScript从JSON数组中读取数据并生成滚动分页效果。滚动分页是一种用户滚动到页面底部时自动加载更多数据的技术,常见于社交网络和新闻网站。 首先,我们需要理解JSON(JavaScript...
滚动分页是一种常见的网页设计技术,它允许用户在页面滚动到底部时自动加载更多内容,无需点击“下一页”按钮。这种技术对于提高用户体验、减少页面加载时间以及优化移动设备的浏览体验尤其重要。在本篇文章中,我们...
在IT行业中,页面滚动分页是一种常见的网页优化技术,它能有效地提高用户体验,尤其是在处理大量数据或内容的网页上。这种技术通常与JavaScript库或框架相结合,如本例中的iScroll,来实现下拉刷新和自动滚动翻页...
iscroll是由Matteo Spinelli开发的一个轻量级、高性能的JavaScript滚动库,适用于移动设备和桌面浏览器。它支持触摸事件,平滑滚动,以及诸如轮播、滚动条等高级特性。在移动应用中,iscroll常用于替代原生的滚动...
JavaScript真分页是一种在网页上实现数据分页的技术,它允许用户通过点击或滚动来查看大量数据的不同部分,而无需一次性加载所有内容。这种技术在处理大数据集时尤其有用,可以提高网页性能,减少服务器压力,并提升...
为了满足这些需求,滚动分页成为了一种流行的解决方案,特别是在数据量庞大的网站中。本教程将详细讲解如何使用jQuery和Node.js来实现一个滚动分页插件。 首先,jQuery是一个强大的JavaScript库,它简化了DOM操作、...
JavaScript分页是网页开发中一个常见且重要的功能,它用于处理大量数据的显示,通过将数据分割成小块,逐页加载,提高了用户体验并优化了页面性能。在本项目中,我们将探讨如何使用纯JavaScript实现分页功能,以及...
JavaScript 分页是网页开发中常见的需求,特别是在处理大量数据时,为了提高用户体验,避免一次性加载过多内容导致页面卡顿,通常会采用分页技术。在JavaScript中实现分页功能主要涉及以下几个关键知识点: 1. **...
JavaScript 分页实现是一种常见的网页交互功能,特别是在处理大量数据时,为了提高页面加载速度和用户体验,通常会将数据分批加载。在这个主题中,我们将深入探讨JavaScript如何实现分页功能,以及与Spring框架的...
**jQuery漂亮滚动分页插件(jPaginate)详解** 在网页设计中,为了提供良好的用户体验,尤其是在处理大量数据时,滚动分页是一个不可或缺的功能。jQuery的jPaginate插件就是一个非常实用的工具,它能够帮助开发者创建...
IScroll是由Matteo Spinelli开发的高性能JavaScript滚动库,它提供了一种优雅的方式来处理触摸滚动、鼠标滚轮滚动以及键盘导航,尤其是在处理大量数据和复杂布局时。本插件是基于IScroll 5.0.3版本进行封装,旨在...
本实例将探讨如何使用JavaScript从JSON数据源中实现滚动分页功能。 首先,理解JSON(JavaScript Object Notation)是轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据通常以键值对的...
"可滚动分页算法"是为了解决这一问题而设计的一种策略,其核心目标是在用户滚动时始终保持第一页和最后一页可见,这样用户既能快速访问起始数据,又能便捷地跳转到末尾。以下是关于这种算法的详细解释: 1. **分页...
JavaScript 分页模块是一种在网页中实现数据分页功能的技术,主要应用于大数据量的展示场景,如用户列表、文章列表等。这种模块通过将大量数据分割成小块(每块为一页),让用户能够逐页浏览,而不是一次性加载所有...
因此,移动端Web滚动分页应运而生,作为一种新颖且高效的交互方式,它极大地改善了用户查看数据时的体验。本文将探讨移动端Web滚动分页的实现方法,并分析其带来的优点。 首先,我们来了解一下移动端Web滚动分页的...
JavaScript中的鼠标滚动分页是一种优化大量数据加载的技术,它避免了一次性加载所有数据导致页面加载缓慢的问题。在网页开发中,特别是在展示大量列表或表格数据时,分页尤为重要,因为它提高了用户体验,使得用户...
JavaScript分页是网页开发中常用的一种技术,用于处理大量数据时,将数据分割成多个页面进行展示,提高用户体验。在不加载所有数据的情况下,只加载用户当前查看的部分,这样可以减少页面加载时间,提高页面性能。...
2. **无限滚动分页**: 也称为“滚动加载”或“懒加载”,这种分页方式会在用户滚动到页面底部时自动加载更多内容,提供无缝浏览体验。无限滚动可以减少页面加载时间,但可能对SEO不友好,因为搜索引擎无法抓取所有...