;(function($){
$.fn.extend({
pageList: function (json) {
function PageList() {
this.initHtml = ""; //初次加载后的Html
this.num = 0; //页码个数
this.totalPageCount = 0;//总页数
this.size = 0;//每页数据条数
this.hiddenPosition = 3;//省略号的位置
this.fwNotNum = 2; //插件前面的非页码个数
this.fwNotNumHtml = "";//插件前面的非页码html
this.backNotNumHtml = "";//插件后面的非页码html
}
PageList.prototype.init = function (objPageList, json) {
var pageListFunction = this;
objPageList.addClass("pageList");
if (json) {
if (!json.total || isNaN(json.total)) {
json.total = 1;
// alert("分页插件total参数异常,插件加载失败");
//return;
}
if (!json.size || isNaN(json.size)) {
json.size = 10;
}
if (!json.num || isNaN(json.num) || json.num < 10) {
json.num = 10;
}
if(!json.ajax){
json.ajax=function(){};
}
}
var fwNotNumHtml = "<a class='pageList_FirstPage'><label>首页</label></a><a class='pageList_PrevPage'>上页</a>";
var backNotNumHtml = "<a class='pageList_NextPage'>下页</a><a class='pageList_LastPage'>末页</a><input class='jumpNum' type='text' value='' /><a class='jumpText' href='javascript:void(0)'>跳转</a>";
var html = "";
html += fwNotNumHtml;
var totalPageCount = Math.ceil(json.total / json.size); if (totalPageCount <= json.num) {
for (var i = 1; i <= totalPageCount; i++) {
if (i == 1) {
html += "<a class='pageList_Num pageList_Current'>" + i + "</a>";
continue;
}
html += "<a class='pageList_Num'>" + i + "</a>";
}
}
else {
var hidden = json.num - pageListFunction.hiddenPosition;
for (var i = 1; i <= totalPageCount; i++) {
if (i == 1) {
html += "<a class='pageList_Num pageList_Current'>" + i + "</a>";
continue;
}
if (i == hidden) {
html += "<a class='pageList_Hidden'>...</a>";
break;
}
html += "<a class='pageList_Num'>" + i + "</a>";
}
for (var j = pageListFunction.hiddenPosition - 1; j >= 0; j--) {
html += "<a class='pageList_Num'>" + (totalPageCount - j) + "</a>";
}
}
html += backNotNumHtml;
objPageList.html(html);
pageListFunction.initHtml = html;
pageListFunction.num = json.num;
pageListFunction.size = json.size;
pageListFunction.totalPageCount = totalPageCount;
pageListFunction.fwNotNumHtml = fwNotNumHtml;
pageListFunction.backNotNumHtml = backNotNumHtml;
pageListFunction.ajax=json.ajax;
}
PageList.prototype.centerPage = function () { return Math.ceil(this.totalPageCount / 2); }
PageList.prototype.limitData = function () { return this.totalPageCount - this.hiddenPosition - 1; }
PageList.prototype.clickA = function (objA, objPageList) {
var pageListFunction = this;
var clickA = 0;
if (objA.hasClass("pageList_Current") || objA.hasClass("pageList_Hidden")) {
return;
}
else if (objA.hasClass("pageList_Num")) {
clickA = parseInt(objA.html());
}
else if (objA.is(".pageList_FirstPage")) {
if (pageListFunction.getCurrentData(objPageList) == 1)
return;
clickA = 1;
}
else if (objA.is(".pageList_PrevPage")) {
clickA = pageListFunction.getCurrentData(objPageList) - 1;
if (clickA <= 0)
return;
}
else if (objA.is(".pageList_NextPage")) {
clickA = pageListFunction.getCurrentData(objPageList) + 1;
if (clickA > pageListFunction.totalPageCount)
return;
}
else if (objA.is(".pageList_LastPage")) {
if (pageListFunction.getCurrentData(objPageList) == pageListFunction.totalPageCount)
return;
clickA = pageListFunction.totalPageCount;
}
else if (objA.is(".jumpText")||objA.is("input.jumpNum")) {
var clickAtext = $(".jumpNum", objPageList).val();
if (clickAtext == "") return;
clickA = parseInt(clickAtext);
var currentA = pageListFunction.getCurrentData(objPageList);
if (isNaN(clickA)) { return; }
else if (clickA <=0) { return; }
else if (clickA > pageListFunction.totalPageCount) { return; }
else if (clickA == currentA) { return; }
}
pageListFunction.ajax();
pageListFunction.clickNum(clickA, objPageList);
} PageList.prototype.getCurrentData = function (objPageList) {
return parseInt($("a.pageList_Current",objPageList).html());
}
PageList.prototype.getHiddenFwOrBackData=function(objPageList,type){//返回省略号前面或后面的值
if(type=="fw")
return parseInt($("a.pageList_Hidden",objPageList).prev().html());
else if(type=="back")
return parseInt($("a.pageList_Hidden", objPageList).next().html());
}
PageList.prototype.hiddenFwOrBackHtml = function (type) {//返回省略号前后的htm页码的html
var html = "";
if (type === "fw") {//省略号在前
for (var i = 1; i <= this.hiddenPosition; i++) {
html += "<a class='pageList_Num'>" + i + "</a>";
}
}
else if (type === "back") {//省略号在后
for (var j = this.hiddenPosition - 1; j >= 0; j--) {
html += "<a class='pageList_Num'>" + (this.totalPageCount - j) + "</a>";
}
}
return html;
}
PageList.prototype.addPageList_Current = function (clickNum, objPageList) {
$("a.pageList_Num", objPageList).removeClass("pageList_Current").each(function () {
if (parseInt($(this).html()) == clickNum) {
$(this).addClass("pageList_Current");
}
});
}
PageList.prototype.getHiddenHtml = function () {
return "<a class='pageList_Hidden'>...</a>";
};
PageList.prototype.newHtml = function (type, objPageList, clickNum) {//返回新的Html,只返回不操作
var pageListFunction = this;
var html = "";
if (type == 1)
html += pageListFunction.initHtml;
else if (type == 2) {
html += pageListFunction.fwNotNumHtml; //首页,第一页
html += pageListFunction.hiddenFwOrBackHtml("fw"); //省略号前的数
html += pageListFunction.getHiddenHtml(); //省略号
var start = pageListFunction.totalPageCount - (pageListFunction.num - pageListFunction.hiddenPosition - 1) + 1;
for (var i = start; i <= pageListFunction.totalPageCount; i++) {
html += "<a class='pageList_Num'>" + i + "</a>";
}
html += pageListFunction.backNotNumHtml;
}
else if (type == 3) {
clickNum += 1;
html += pageListFunction.fwNotNumHtml;
var start = clickNum - (pageListFunction.num - pageListFunction.hiddenPosition - 1) + 1;
for (var i = start; i <= clickNum; i++) {
html += "<a class='pageList_Num'>" + i + "</a>";
}
html += pageListFunction.getHiddenHtml();
html += pageListFunction.hiddenFwOrBackHtml("back");
html += pageListFunction.backNotNumHtml;
}
else if (type == 4) {
html += pageListFunction.fwNotNumHtml;
html += pageListFunction.hiddenFwOrBackHtml("fw");
html += pageListFunction.getHiddenHtml();
clickNum -= 1;
var end = pageListFunction.num - pageListFunction.hiddenPosition - 1 + clickNum - 1;
for (var i = clickNum; i <= end; i++) {
html += "<a class='pageList_Num'>" + i + "</a>";
}
html += pageListFunction.backNotNumHtml;
}
return html;
}
PageList.prototype.clickNum = function (clickNum, objPageList) {
var pageListFunction = this;
var html = "";
if (pageListFunction.totalPageCount <= pageListFunction.num) {
pageListFunction.addPageList_Current(clickNum, objPageList); return;
}
else if (clickNum <= 5) {
html = pageListFunction.newHtml(1, objPageList);
}
else if (clickNum >= pageListFunction.limitData()) {
html = pageListFunction.newHtml(2, objPageList);
}
else {
if (clickNum < pageListFunction.centerPage())
html = pageListFunction.newHtml(3, objPageList, clickNum);
else if (clickNum >= pageListFunction.centerPage())
html = pageListFunction.newHtml(4, objPageList, clickNum);
}
objPageList.html(html);
pageListFunction.addPageList_Current(clickNum, objPageList);
}
var objPageList = $(this);
var p = new PageList();
p.init(objPageList, json, p);
objPageList.on("click", "a:not('.pageList_Hidden')", function () {
p.clickA($(this), objPageList);
});
objPageList.on("keyup","input.jumpNum",function(event){
if(event.which===13){
p.clickA($(this), objPageList);
}
});
}
});
})(jQuery);
 .pageList{ clear:both; overflow:hidden;}
.pageList .pageList_Nums{ float:left;}
.pageList a{border:1px solid #ccc; margin-left:10px; float:left; display:block; overflow:hidden; padding:3px; font-family:微软雅黑; font-size:12px; min-width:15px; text-align:center; cursor:pointer; height:20px; line-height:20px;}
.pageList a:hover,.pageList_Current{ background-color:#278DE1;}
.pageList a.pageList_Hidden{ border:none; cursor:default;}
.pageList a.pageList_Hidden:hover{ background-color:transparent;}
.pageList input.jumpNum{ width:30px; border:1px solid #8c8c8c; float:left; width:30px; height:20px; margin-left:5px; line-height:20px; padding:3px; text-align:center;}
.pageList a.jumpText{ border:none;background:none; outline:none; margin-left:;}

调用插件:

 $(function(){
$("#pagelist").pageList({ total: 1021, num: 10, size: 8,ajax:function(){
$.ajax({
type: "POST",
//dataType: "html",
url: "",
cache:false,
//data: { pageStar: pageStar, pageEnd: pageEnd },
error: function () { },
success: function (data) {//alert("这里的ajax可以正常执行");
}
});
} });
})

HTML代码:

 <div id="pagelist"></div>

界面效果:

自己写的一个jQuery分页插件的更多相关文章

  1. 自己diy一个jquery分页插件

    js基础学习过程中,期间经历换工作的各种面试,很多面试官问过:有没有写过jquery插件?等类似问题. 就个人而言,关于jquery插件的文章确实看过不少,但是一直没有动手写一个,一是不想在目前学习j ...

  2. 分享一个Jquery 分页插件 Jquery Pagination

    分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也挺简单明了的,也助于自己写个小插件. 不过我比较懒,一般直接 ...

  3. 一个强大的jquery分页插件

    点击这里查看效果 这个分页插件使用方便,引用keleyidivpager.js和keleyidivpager.css文件,然后在htm(或者php,aspx,jsp等)页面中对分页总数,参数名,前缀后 ...

  4. 用jQuery写了一个模态框插件

    用jQuery写了一个模态框插件 大家觉得下面的框框好看么, 水印可以去掉(这个任务交给你们了(- o -)~zZ); "info"框 $("div").con ...

  5. 自己在项目中写的一个Jquery插件和Jquery tab 功能

    后台查询结果 PDFSearchResult实体类: [DataContract(Name = "PDFSearchResult")] public class PDFSearch ...

  6. 21个很棒的jQuery分页插件下载

    分页是指将一个大内容划分为各种不同的页面,因此网站的分页是一个很重要的部分,必须让内容有组织性和易于访问.分页有各两种不同的方式,手动跟自动.最受欢迎简单和广泛的方法是jQuery插件.下面我们收集了 ...

  7. jquery分页插件的修改

    前言 最近分页功能使用的比较多,所以从网上下载个jquery分页插件来使用, 之前用的都挺好的,直到昨天出现了逻辑问题,反复查看自己的代码,最后发现是点击页码后执行了多个点击事件.最后只有自己查看源码 ...

  8. jQuery 分页插件 jqPagination的使用

    jqPagination 是一个简单易用的轻量级 jQuery分页插件,其使用了 HTML5 和 CSS3 技术来实现.此插件提供了几个参数设置选项,通过简单的配置即可生成分页控件.此外,它的外观样式 ...

  9. Jquery 分页插件 Jquery Pagination

    Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也 ...

随机推荐

  1. php 值引用

    1.值传递 复制代码 代码如下: <?php function exam($var1){ $var1++: echo "In Exam:" . $var1 . "& ...

  2. 【转】游戏buff设计参见

    其实这类帖子并没有多少的设计理论,对于策划的提升和帮助也并不大,原因其实在于其适用性太窄,当我要设计XX象棋的时候,它就滚一边去了. 废话不多说切入正题: 游戏中的BUFF/DEBUFF我们见过很多, ...

  3. magento导航栏中如何加入home主页

    magento在导航栏中加入home主页是很简单的,几个步骤即可在magento导航栏中加入home主页! 下面简单介绍下如何在magento导航栏中加入home主页: 首先我们打开对应应用的模板文件 ...

  4. jQuery自动完成点击html元素

    /************************************************************************** * jQuery自动完成点击html元素 * 声 ...

  5. Unity3D安卓程序中提示窗与常用静态方法封装

    Unity3D/安卓封装SDK常用方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 IO -- - ...

  6. ubuntu 安装php 报错解决

    安装php时候遇到的问题: dpkg: 处理软件包 php7.1-opcache (--configure)时出错: 依赖关系问题 - 仍未被配置dpkg: 依赖关系问题使得 php7.1-readl ...

  7. 如何判断一个请求是否为AJAX请求

    普通请求与ajax请求的报文头不一样,通过如下 String requestType = request.getHeader("X-Requested-With");  如果req ...

  8. PHP独立环境搭建细节

    一.安装前准备: 准备安装软件此处以以下软件为例: Appache:httpd-2.2.21-win32-x86-openssl-0.9.8r.msi MySQL: mysql-5.5.21-win ...

  9. JFrame 与 Frame

    JFrame是Frame的子类 Frame is part of java.awt package and exists since JDK1.0. JFrame is part of javax.s ...

  10. Vue基础汇总实践

    1)双向绑定:   <div id="app">   <p>{{message}}</p>   <input v-model=" ...