jquery+css3打造一款ajax分页插件(自写)_jquery

最近公司的项目将好多分页改成了ajax的前台分页
以前写的分页插件就不好用了,遂重写一个

支持IE6+,但没有动画效果
如果没有硬需求,个人认为没必要多写js让动画在这些浏览器中实现
css3的动画本来就是帮我们取代js中这部分动画代码的
使js更纯粹地去实现逻辑

效果图如下:

调用代码如下:

包括常用的加载失败重试,参数可配置是否能手动输入页码,设置按钮数目,可以调用多个page等等,调用代码很简便

<script type="text/javascript">
 var kpage;

 $(function () {
  tocount();
 });

 function tocount() {
  //初始化
  $.ajax({ url: "/Service/DBCount", type: "post", success: function (e) {
   kpage = $("#divPage").page({ dataCount: e, pageChange: topage });
  }
  });
 }

 function topage(i, s) {
  //数据查询
  $("#divInfo").html("加载中...");
  $.ajax({ url: "/Service/List", type: "post", data: { PageSize: s, PageIndex: i }, success: function (r) {
   $("#tList").html(r);
   $("#divInfo").html("");
  }, error: function () {
   $("#divInfo").html("加载失败...<a href='javascript:reload();'>重试</href>");
  }
  });
 }

 function reload() {
  kpage.reload();
 }

</script>

具体jquery.kun_page.js:

/*
jquery.kun_page.js
lxk 2014.06.16
www.cnblogs.com/wingkun

---------------------------------
参数config:

dataCount:数据总数

pageSize:页数据条数

maxButton:页码按钮数目

showCustom:是否能手动输入页码 

pageChange:页变更事件
参数:(i,s,c)
i:pageIndex,当前页
s:pageSize,页数据条数
c:pageCount,总页数

*/

(function($){

$.fn.page = function (config) {

 if (this.length != 1) {
  throw "k_page:如有多个page请调用多次!";
 }

 var defaults = { dataCount: 1, pageSize: 10, maxButton: 6, showCustom: true, pageChange: null }
 config = $.extend(defaults, config);

 if (config.maxButton <= 1) config.maxButton = 2;
 if (config.pageSize < 1) config.pageSize = 1;
 //按钮数目需偶数
 if (config.maxButton % 2 != 0)
  config.maxButton++;

 var pageIndex = 1, pageCount, move_kf;

 //初始化页数
 function initcount() {
  pageCount = config.dataCount % config.pageSize == 0 ? config.dataCount / config.pageSize : parseInt(config.dataCount / config.pageSize) + 1;
 }
 initcount();

 var prev = "

上一页
", next = "
下一页
", pbody = $(""), pcustom = $("到第  页
确定
"), cl = "

", pipt = $("");
this.empty().addClass("kun_page").append(prev);
pipt.keypress(function (e) {
if (e.which == 13) {
topage("确定");
return false;
}
}).appendTo(pcustom.children());

if (config.pageChange) {
this.unbind("click").bind("click", function (e) {
var _t = $(e.target);
if (_t[0].tagName == "DIV" && _t[0].className != "kun_page") {
topage(_t.text());
}
});
}

//跳转页码
function topage(text) {

switch (text) {
case "上一页":
if (pageIndex - 1 < 1) {
return;
}
pageIndex--;
move_kf = "sc_r";
break;
case "下一页":
if (pageIndex + 1 > pageCount) {
return;
}
pageIndex++;
move_kf = "sc_l";
break;
case "确定":

if (!/^\d+$/.test(pipt.val())) {
pipt.val("");
return;
}
text = parseInt(pipt.val());
if (text < 1 || text > pageCount) {
pipt.val("");
return;
}

default:
var _pindex = parseInt(text);
if (pageIndex == _pindex)
return;
move_kf = pageIndex < _pindex ? "sc_l" : "sc_r";
pageIndex = _pindex;
break;
}

gopageChange();
}

//页变更事件
function gopageChange() {
if (config.pageChange) {
if (config.dataCount != 0) {
config.pageChange(pageIndex, config.pageSize, pageCount);
endloading();
}
}
}

//异步加载结束
function endloading() {
initpage();

}

//添加页码
function initpage() {
pbody.empty();
var _t_maxb = config.maxButton / 2;
//前后页码集合
var _t_listp = [], _t_listn = [];
var _min = 0, _max = pageCount;

for (var i = 1; i <= _t_maxb; i++) {
var _t_prev = pageIndex - i, _t_next = pageIndex + i;
//当前页码之前的页
if (_t_prev > 0) {
_t_listp.push("
" + _t_prev + "
");
if (i == _t_maxb) _min = _t_prev;
}
//当前页码之后的页
if (_t_next <= pageCount) {
_t_listn.push("
" + _t_next + "
");
if (i == _t_maxb) _max = _t_next;
}
}
//显示第一页
if (_min > 1) pbody.append("
1
");
//显示前 ……
if (_min - 1 > 1) pbody.append("...");

for (var i = _t_listp.length; i >= 0; i--) {
pbody.append(_t_listp[i]);
}

pbody.append("
" + pageIndex + "
");

for (var i = 0; i < _t_listn.length; i++) {
pbody.append(_t_listn[i]);
}

//显示后 ……
if (pageCount - _max > 1) pbody.append("...");

//显示最后一页
if (_max < pageCount) pbody.append("
" + pageCount + "
");

}

initpage();
gopageChange();

this.append(pbody).append(next);
if (config.showCustom)
this.append(pcustom);
this.append(cl);

return { reload: gopageChange, pageCount: pageCount, recount: function (e) {
//重新计算页数
config.dataCount = e;
pageIndex = 1;
initcount();
initpage();
gopageChange();
}
};

//console.log(_min + "*" + _max + "*" + pageCount);
}

})(jQuery)

样式kun_page.css:

/*
 kun_page.css
 lxk 2014.06.16
 www.cnblogs.com/wingkun
*/

.kun_page {font-size: 12px;line-height:23px;font-family:"Microsoft YaHei";}
.kun_page .k_p_page{position:relative;}
.kun_page div {float: left;margin: 3px;border: solid 1px #ccc;cursor: pointer;color: #333;min-width:12px;text-align:center;padding:0px 5px;}
.kun_page em {display: block;float: left;margin: 2px;}
.kun_page .k_p_current {background: #ccc;color: #fff;-webkit-animation:scroll_b 300ms;animation:scroll_b 300ms;}
.kun_page .k_cl {clear: both;float: none;border: none;margin: 0px;padding: 0px;width:0px;height:0px;}
.kun_page .k_custom {display: block;float: left;margin: 3px 3px 3px 20px;}
.kun_page .k_ipt {width: 30px;height: 21px;border: solid 1px #ccc;text-align: center;vertical-align:middle;}
.kun_page .k_m{ opacity: 0; width: 1%; height: 1%;top:0px;left:0px; display:block; position: absolute; }
.kun_page .sc_l{background: -webkit-gradient(linear, 0 100%, 100% 100%, from(#CCCCCC), to(#645F5F));
 -webkit-transform:translate(-50px);-webkit-animation:scroll_k_l 300ms linear;
 background: -moz-linear-gradient(left,#CCCCCC 0%, #645F5F 100%);
 background: -ms-linear-gradient(left,#CCCCCC 0%, #645F5F 100%);
 transform:translate(-50px);animation:scroll_k_l 300ms linear;

 }
.kun_page .sc_r{background: -webkit-gradient(linear, 0 100%, 100% 100%, from(#645F5F), to(#CCCCCC));
 -webkit-transform:translate(50px); -webkit-animation:scroll_k_r 300ms linear;
 background: -moz-linear-gradient(left, #645F5F 0%, #CCCCCC 100%);
 background: -ms-linear-gradient(left,#CCCCCC 0%, #645F5F 100%);
 transform:translate(50px); animation:scroll_k_r 300ms linear;
 }

/*
animation
*/

@-webkit-keyframes scroll_k_l{
0%{-webkit-transform:translate(-100px);opacity:0.2;width:200%;height:100%;}
99%{-webkit-transform:translate(-20px);opacity:0;width:200%;height:100%;}
100%{-webkit-transform:translate(-20px);opacity:0;width:1%;height:1%;}
}

@-webkit-keyframes scroll_k_r{
0%{-webkit-transform:translate(100px);opacity:0.2;width:200%;height:100%;}
99%{-webkit-transform:translate(20px);opacity:0;width:200%;height:100%;}
100%{-webkit-transform:translate(20px);opacity:0;width:1%;height:1%;}
}

@keyframes scroll_k_l{
0%{transform:translate(-100px);opacity:0.2;width:200%;height:100%;}
99%{transform:translate(-20px);opacity:0;width:200%;height:100%;}
100%{transform:translate(-20px);opacity:0;width:1%;height:1%;}
}

@keyframes scroll_k_r{
0%{transform:translate(100px);opacity:0.2;width:200%;height:100%;}
99%{transform:translate(20px);opacity:0;width:200%;height:100%;}
100%{transform:translate(20px);opacity:0;width:1%;height:1%;}
}

@-webkit-keyframes scroll_b{
0%,99%{background: #fff;color: #000;}
100%{background: #ccc;color: #fff;}
}
@keyframes scroll_b{
0%,99%{background: #fff;color: #000;}
100%{background: #ccc;color: #fff;}
}

样式和动画都可以自己修改(好吧,动画效果很朴素,闹哪样,明明想了很久好吗)

pageChange事件里面也没有过多的其他处理,比如我们公司前后台处理json就有一套方案,ajax提交的参数也有处理

所以若有需求,完全可以在我的代码上再封装一层

另外插件内公开的方法暂只有几个,可视情况增加

代码下载(后台查询代码需要自己写一个):这里

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
, ajax分页
css3
css3分页、css3分页样式、html5 css3分页插件、css3 分页效果、css3与js打造音乐频谱,以便于您获取更多的相关知识。

时间: 2024-09-12 01:56:13

jquery+css3打造一款ajax分页插件(自写)_jquery的相关文章

分享精心挑选的12款优秀jQuery Ajax分页插件和教程_jquery

Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 jQuery 框架很容易实现各种基于 Ajax 技术实现的功能.我们一起来看看下面这些优秀的分页插件. 1.Client-side jQuery pagination plugin : jPages jPages 是一款非常不错的客户端分页插件,有很多特色,例如自动播放.按键翻页.延迟加载等等. 浏览详情  在线演示 2. jPaginate: A Fancy jQuery Pagination Plugin jPa

分享精心挑选的12款优秀 jQuery Ajax 分页插件和教程

在这篇文章中,我为大家收集了20个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 jQuery 框架很容易实现各种基于 Ajax 技术实现的功能.我们一起来看看下面这些优秀的分页插件.   1.Client-side jQuery pagination plugin : jPages jPages 是一款非常不错的客户端分页插件,有很多特色,例如自动播放.按键翻页.延迟加载等等.

jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版_jquery

原项目地址:http://plugins.jquery.com/project/pagination版本:v1.2源文件下载:英文原版 或中文翻译修改版 一.相关demo 基本demo页面 Ajax demo页面 参数可编辑demo页面 二.简介与说明 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢. 原插件CSS不太合理,使用浮动,故无法方便实现左右方向的定位,且未清除浮动,在中文修改版中我对其进行了优化,使其支持te

Ajax分页插件Pagination从前台jQuery到后端java总结_jquery

困惑了我一段时间的网页分页,今天特地整理了一下我完成不久的项目.下面我要分享下我这个项目的分页代码,前后端通吃.希望前辈多多指教. 一.效果图 下面我先上网页前台和管理端的部分分页效果图,他们用的是一套代码. 二.上代码前的一些知识点 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢. 三.前台代码部分 var pageSize =6; //每页显示多少条记录 var total; //总共多少记录 $(function(

jquery ajax分页插件的简单实现_jquery

说到基于jQuery的ajax分页插件,那我们就先看看主要的代码结构: 1.首先定义一个pager对象: var sjPager = window.sjPager = { opts: { //默认属性 pageSize: 10, preText: "pre", nextText: "next", firstText: "First", lastText: "Last", shiftingLeft: 3, shiftingRig

jQuery simplePage+AJAX plus分页插件用法实例_jquery

本文实例讲述了jQuery simplePage+AJAX plus分页插件.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&q

Jquery+CSS3实现一款简洁大气带滑动效果的弹出层_jquery

此Jquery特效是一款Jquery+CSS3实现简洁大气带滑动效果的弹出层,应用范围很广泛,比如用在消息提示.弹出层显示内容.弹出层登录等,带遮罩效果,虽然没有封装成插件,但使用起来也非常简单,宽度和高度直接调样式. 包含了以下功能: 1.弹出层 2.带关闭按钮 3.遮罩层效果 4.从上向下滑动显示 5.点击层外面任何地方关闭 6.绑定控制按钮 7.内容过多自动显示滚动条 如果不满足大家的要求,自己可以二次开发哦 效果如下: 在线演示

JQuery打造PHP的AJAX表单提交实例_jquery

如果你对JQuery的基本语法还不是很熟悉,请搜索本站的教程资源.如果你对PHPMailer用法不熟悉,请查看本站的另一篇文章<使用PHPMailer类库发送电子邮件>. 第一步,创建一个表单HTML页面 这里,我们只展示主要的表单部分HTML结构代码: 复制代码 代码如下: <div id="contact_form"> <form name="contact" method="post" action="

jquery+css3问卷答题卡翻页动画效果示例_jquery

CSS3+jQuery制作立体翻页时间展示动画特效.该翻页插件的外观非常华丽喜庆,非常适合产品活动或者育儿网站使用. 这个选项调查的特效以选项卡的形式,每答完一道题目自动切换到下一条,颇具特色.使用jQuery和CSS3,适合HTML5浏览器. 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatib