这里先给出API:

你只需要提供一个对象涉及以下几项属性,你来设置属性值,通过jq对象链式调用page()以参数形式来加载这个对象,按照参数要求会自动生成分页功能,

参数中pageEvent是可以让你自定义每个按钮按下时触发的事件,实际运用中你可以在事件中用ajax请求来实现分页,具体例子可以参照page.html文件.
建议使用1.8及1.8以前版本的jquery库,因为live()函数可能不支持.引用格式如下:

 var o1={
prePage:"上一页",
nextPage:"下一页",
totalItems:100,
pageItems:5,
maxPages:8,
pageEvent:exampleFunc, //当前选取的jquery对象为参数 }; function exampleFunc(jq){
alert(jq.html());
return jq;
} $(".a1").page(o1);

  具体代码如下:

;(function($,window,document,undefined){
var defaults={ prePage:"上一页",
nextPage:"下一页",
totalItems:1,
pageItems:5,
maxPages:8,
pageEvent:exampleFunc, //当前选取的jquery对象为参数
}; function exampleFunc(jq){
alert(jq.html());
return jq;
} function Paper($elm,options){ this.$elm=$elm;
this.options=options;
this.init(); }; var temp=[]; //存储html字符串的数组
var items=[]; //存取页数的数组
var a=0;
var teams=0;
var totalPages; //总页数
var prePage;
var nextPage; var $elm; //选取的当前dom对象的jquery对象
var endTeam;
var maxPages;
var dispatcher="跳转到";
var endWord="页";
Paper.prototype={
init:function(){
this.renderHtml();
this.bindEvent(); },
renderHtml:function(){
if(this.options.totalItems==0){alert('无内容!');} var divStr; if(this.options.totalItems%this.options.pageItems<this.options.pageItems && this.options.totalItems%this.options.pageItems!=0){totalPages=parseInt(this.options.totalItems/this.options.pageItems)+1;}else{totalPages=parseInt(this.options.totalItems/this.options.pageItems);} teams=parseInt(totalPages/this.options.maxPages); //组数
endTeam=totalPages%this.options.maxPages; //这个是最后一组的个数 var that=this.options.maxPages;
//将所有页组数存进二维数组中
(function(){ for(var i=0;i<teams;i++){
items[i]=[];
for(var j=0;j<that;j++){ items[i][j]=j;
}
} if(endTeam!=0){ items[teams]=[];
for(var c=0;c<endTeam;c++){ items[teams][c]=c;
}
} })(); for(var i=0;i<items[0].length;++i){
divStr="<div class='bg'><a href='#'>"+(a*this.options.maxPages+i+1)+"</a></div>";
temp.push(divStr);
}
temp.unshift("<div class='start'>"+this.options.prePage+"</div>");
temp.unshift("<div class='total'>共有"+totalPages+"页</div>");
temp.push("<div class='end'>"+this.options.nextPage+"</div>");
temp.push("<div class='bg2'>"+dispatcher+"</div>");
temp.push("<input class='input' placeholder='1'>");
temp.push("<div class='bg3'>"+endWord+"</div>"); this.$elm.html(temp.join("")); },
bindEvent:function(){
var Pages=this.options.totalItems/this.options.pageItems; //总页数
var prePage=this.options.prePage;
var nextPage=this.options.nextPage;
var $elm=this.$elm;
var that= this.options;
maxPages=this.options.maxPages; //点击相应某页
$(".bg").live("click",function(){
that.pageEvent($(this).children("a"));
$(this).children("a").css("color","red");
$(this).siblings().children("a").css("color","#fff"); }); //点击上一页
$(".start").live("click",function(){
if(a>0)a=a-1;
else return;
temp=[];
for(var i=0;i<items[a].length;++i){ divStr="<div class='bg'><a href='#'>"+(a*maxPages+1+i)+"</a></div>";
temp.push(divStr);
} temp.unshift("<div class='start'>"+prePage+"</div>");
temp.unshift("<div class='total'>共有"+totalPages+"页</div>");
temp.push("<div class='end'>"+nextPage+"</div>");
temp.push("<div class='bg2'>"+dispatcher+"</div>");
temp.push("<input class='input' placeholder='1'>");
temp.push("<div class='bg3'>"+endWord+"</div>");
$elm.html(temp.join(""));
}); //点击下一页
$(".end").live("click",function(){
temp=[]; //temp初始为空数组 if(items[teams]===undefined){ //最后剩余的一组不存在
if(a<teams-1)a=a+1;
else return;
for(var i=0;i<items[a].length;++i){ divStr="<div class='bg'><a href='#'>"+(a*maxPages+1+i)+"</a></div>";
temp.push(divStr);
}}else{
if(a<teams)a=a+1;
else return;
for(var i=0;i<items[a].length;++i){ divStr="<div class='bg'><a href='#'>"+(a*maxPages+1+i)+"</a></div>";
temp.push(divStr);
}};
temp.unshift("<div class='start'>"+prePage+"</div>");
temp.unshift("<div class='total'>共有"+totalPages+"页</div>");
temp.push("<div class='end'>"+nextPage+"</div>");
temp.push("<div class='bg2'>"+dispatcher+"</div>");
temp.push("<input class='input' placeholder='1'>");
temp.push("<div class='bg3'>"+endWord+"</div>");
$elm.html(temp.join(""));
});
//点击跳转
$(".bg2").live("click",function(){ temp=[];
var input=$(".input").val(); if(isNaN(parseInt(input))==true) a=1; //字符类型字符串,包括空字符
else{ if(input%maxPages===0) a=parseInt(input/maxPages);
else{
a=parseInt(input/maxPages)+1;
var c=input%maxPages;
}
}
a=a-1;
for(var i=0;i<items[a].length;++i){ divStr="<div class='bg'><a href='#'>"+((a)*maxPages+1+i)+"</a></div>";
temp.push(divStr);
} temp.unshift("<div class='start'>"+prePage+"</div>");
temp.unshift("<div class='total'>共有"+totalPages+"页</div>");
temp.push("<div class='end'>"+nextPage+"</div>");
temp.push("<div class='bg2'>"+dispatcher+"</div>");
temp.push("<input class='input' placeholder='1'>");
temp.push("<div class='bg3'>"+endWord+"</div>");
$elm.html(temp.join(""));
});
}
}; $.fn.page=function(options){
var options=$.extend(defaults,options||{});
return new Paper($(this),options);
} })($,window,document);

  

这里个给出一个引用例子:

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page</title>
<script src="../jquery/jquery.js"></script>
<script src="page.js"></script>
<style>
#cont{position: relative;top:10px;left:50px;}
#a1{position:relative;top:20px;left:10px;}
.bg{width:30px;height:30px;margin-left:10px;background: #456;float:left;margin-top:10px;text-align: center;line-height: 30px;border-radius:5px;}
a{text-decoration: none;color:#fff;}
.start{width:100px;height:30px;float:left;margin-top: 10px;text-align: center;line-height: 30px;color:#fff;background: #456;cursor:pointer;margin-left: 10px;border-radius:5px;}
.end{width:100px;height:30px;float:left;margin-top: 10px;text-align: center;line-height: 30px;color:#fff;background: #456;margin-left:10px;cursor:pointer;border-radius:5px;}
.total{width:120px;height:30px;float:left;margin-top:10px;text-align:center;line-height:30px;background: #456;color: #fff;border-radius:5px;} .bg2{width:100px;height:30px;margin-left:10px;background: #456;float:left;margin-top:10px;text-align: center;line-height: 30px;border-radius:5px;color: #fff;}
.bg3{width:30px;height:30px;margin-left:10px;background: #456;float:left;margin-top:10px;text-align: center;line-height: 30px;border-radius:5px;color: #fff;}
.input{width:50px;height:25px;margin-left:10px;float:left;margin-top:10px;text-align: center;line-height: 30px;border-radius:10px;} </style>
</head>
<body>
<div id="cont">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li> </ul>
</div>
<div id="a1"></div>
<!-- <div class=""><span class="bg2">跳转到</span><input class="input" type="text"><span class="bg3">页</span> --><!-- </div> -->
<script>
var o1={
prePage:"上一页",
nextPage:"下一页",
totalItems:100,
pageItems:5,
maxPages:8,
pageEvent:exampleFunc, //当前选取的jquery对象为参数 }; //一个模拟的json数据对象,这里太长我就简单给出几页数据,建议你用一些框架的列表渲染模式来实现列表生成,这里我手写li是为了让不了解框架的同学也能看到效果。实际运用可以用ajax请求获取这个json对象 var data={
1:[1,2,3,4,5],
2:[6,7,8,9,10],
3:[11,12,13,14,15],
4:[16,17,18,19,20],
5:[21,22,23,24,25],
6:[26,27,28,29,30],
7:[31,32,33,34,35],
8:[36,37,38,39,40]
} function exampleFunc(jq){
var index=jq.html();
$("#cont ul li:first").html(data[index][0]);
$("#cont ul li:first").next().html(data[index][1]);
$("#cont ul li:first").next().next().html(data[index][2]);
$("#cont ul li:first").next().next().next().html(data[index][3]);
$("#cont ul li:first").next().next().next().next().html(data[index][4]);
} //这句是关键句
$("#a1").page(o1);
</script>
</body>
</html>

    模拟的json数据对象,这里太长我就简单给出几页数据,建议你用一些框架的列表渲染模式来实现列表生成,这里我手写li是为了让不了解框架的同学也能看到效果。实际运用可以用ajax请求获取这个json对象 

写下这个插件,花了一些时间,很大的原因是为了培养自己能够熟练造轮子的能力,同时也是锻炼自己Js代码的功力,不管你是为了直接使用,还是学习,都可以下载这个插件的源码,我把代码放到了github上,地址是:https://github.com/Johnharvy/Page-plug-in.我很喜欢Js,是一名入职不久的前端,喜欢钻研Js及前端技术,还有Js越来越多和成熟的运行环境,如果你也是如此,希望在这条路上交您这位朋友,互相学习。有意者可以加我扣扣1667582186(注明博客园),真心交喜欢Js的朋友,和你一起走向大神之路。

Js分页插件,支持页面跳转的更多相关文章

  1. 一款基于Bootstrap的js分页插件bootstrap-paginator使用实例

    Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态的改变,以及事件来监听用户的动作 ...

  2. Bootstrap的js分页插件属性介绍

    Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定 制,提供了公共的方法可随时获得插件状 ...

  3. Jquery.Page.js 分页插件的使用

    1.简单直接贴代码 需要引用以下样式和脚本 <link href="~/Scripts/Page/pager.css" rel="stylesheet" ...

  4. JQuery.Page.js分页插件的使用

    1.简单直接贴代码 需要引用以下样式和脚本 <link href="~/Scripts/Page/pager.css" rel="stylesheet" ...

  5. js分页插件

    //分页插件1function showView(option) {    //参数定义id,页容量,当前页,总数,页总数    var id = option.id,         pageSiz ...

  6. JS页面跳转和js对iframe进行页面跳转、刷新

    一.js方式的页面跳转1.window.location.href方式    <script language="JavaScript" type="text/ja ...

  7. JS是否确认提示 +页面跳转

    JS友好提示 +页面跳转 function logout()...{if (confirm("你确定要注销身份吗?是-选择确定,否-选择取消"))...{window.locati ...

  8. twbsPagination.js分页插件

    分页插件在使用时注意,如果页面中存在其他异步加载的数据,在运行分页方法第一次后,页面上的分页样式与分页中的data数据就是第一次的数据,如果异步加载重新在页面上录入数据,并希望分页继续在新的数据上实现 ...

  9. 微信小程序插件内页面跳转和参数传递(转)

    在此以插件开发中文章列表跳传文章详情为例. 1.首先在插件中的文章列表页面wxml中绑定跳转事件. bindtap='url' data-id="{{item.article_id}}&qu ...

随机推荐

  1. Vue#Class 与 Style 绑定

    绑定HTMLCLASS 在我没看这之前,我觉得要写绑定class ,应该像绑定数据一样这么写 class ={{class-a}} 看官方教程时,不推荐这么写,推荐这样 v-bind:class=&q ...

  2. summary of k Sum problem and solutions in leetcode

    I found summary of k Sum problem and solutions in leetcode on the Internet. http://www.sigmainfy.com ...

  3. HDU 3911 Black And White(线段树区间合并+lazy操作)

    开始以为是水题,结果...... 给你一些只有两种颜色的石头,0为白色,1为黑色. 然后两个操作: 1 l r 将[ l , r ]内的颜色取反 0 l r 计算[ l , r ]内最长连续黑色石头的 ...

  4. linux查看和修改系统时间

    设置日期:date -s 20091112 设置时间:date -s 18:30:50 日期和时间一起设置: date 111218302009 (月日时分年) date -s "20091 ...

  5. Swift3.0语言教程使用Unicode范式标准化获取字符串

    Swift3.0语言教程使用Unicode范式标准化获取字符串 Swift3.0语言教程使用Unicode范式标准化获取字符串,在NSString中可以使用4个属性去使用Unicode范式标准化获取字 ...

  6. Flume内存溢出错误

    java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:) at java.lang.Ab ...

  7. 读取Excel数据到Table表中

    方法一: try { List<DBUtility.CommandInfo> list = new List<DBUtility.CommandInfo>(); string ...

  8. 微软开放WP开发者回复用户应用评论功能

    1   4月18日,据The NextWeb网站报道,微软今天公布了一项新的开发者试点项目:回复Windows Phone应用评论.该公司表示,它们将在本周推出这项功能,不过目前仅对部分开发者开放. ...

  9. Kafka 分布式消息队列介绍

    Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...

  10. 【转载】Android端手机测试体系

    1.冒烟测试 跟web端 的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃.这款原生sdk自带的monkey可以当做 我们的测试工具.就跟我之前博 ...