最近公司的项目将好多分页改成了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 DataTables插件自定义Ajax分页实例解析,包括了jQuery DataTables插件自定义Ajax分页实例解析的使用技巧和注意事项,需要的朋友参考一下 一、问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分类效果。 后端的分页接口已经写好了,不涉及条件查询,需要传入页码(pageNo)和页面显示数据条数(
本文向大家介绍分享一个自己动手写的jQuery分页插件,包括了分享一个自己动手写的jQuery分页插件的使用技巧和注意事项,需要的朋友参考一下 工作需要一个JS分页插件,心想自己动手写一个吧,一来上网找一个不清楚代码结构的,出了问题难以解决,而且网上的插件所包含的功能太多,有些根本用不到,就没必要加载那段JS,二来想起没写过jQuery插件,就当练一下手了,好了,先看结果: http://demo
本文向大家介绍Jquery 分页插件之Jquery Pagination,包括了Jquery 分页插件之Jquery Pagination的使用技巧和注意事项,需要的朋友参考一下 实用jQuery分页特效插件jquery.pagination.js,基于jQuery实现,可根据pageselectCallback函数callback调用通过ajax调用动态数据,目前的方法是生成JSON数据到JS文
本文向大家介绍15款jQuery分布引导插件分享,包括了15款jQuery分布引导插件分享的使用技巧和注意事项,需要的朋友参考一下 1. Power Tour 2. Bootstrap Tour 3. Bootstro.js 4. Intro.js 5. Power Tour 6. Trip.js 7. jQuery Tour Bus 8. jQuery Site Tour 9. Website
本文向大家介绍jQuery Ajax 实现分页 kkpager插件实例代码,包括了jQuery Ajax 实现分页 kkpager插件实例代码的使用技巧和注意事项,需要的朋友参考一下 代码片段一: 代码片段二: 代码片段三: 下面这段代码:在原版上修改过,由于ajax分页不能及时更新总页数 下面是插件kkpager.js代码: 下面是插件kkpager_blue.css代码: 总结 以上所述是小编
本文向大家介绍jQuery Raty 一款不错的星级评分插件,包括了jQuery Raty 一款不错的星级评分插件的使用技巧和注意事项,需要的朋友参考一下 在做商品评价时,一般情况下,我们需要一个星级评分的组件,而jQuery Raty恰好满足我们的需求。 一、展示 二、使用教程 ①、下载插件 https://github.com/wbotelhos/raty ②、导入文件 ③、设置raty的全局