/** * description 分页插件 * powered by 小k * qq 908526866 * e-mail lnend@sina.cn * data 2013-05-28 * dependence jquery v1.8.3 **/ (function($){ $.fn.kkpages = function(options){ var opts = $.extend({},$.fn.kkpages.defaults, options); return this.each(function(){ var $this = $(this); var $pagesclass = opts.pagesclass; // 分页元素 var $allmth = $this.find($pagesclass).length; //总个数 var $mth = opts.pagesmth; //每页显示个数 var $navmth = opts.pagesnavmth; // 导航显示个数 // 定义分页导航 var pagesnavhtml = "
首页上一页...
...下一页尾页直接到第确定
"; /*默认初始化显示*/ if($allmth > $mth){ //判断显示 var relmth = $mth - 1; $this.find($pagesclass).filter(":gt("+relmth+")").hide(); // 计算数量,页数 var pagesmth = math.ceil($allmth / $mth); // 计算页数 var pagesmthtxt = ""+$allmth+"条,共"+pagesmth+""; $this.append(pagesnavhtml).find(".pagination").append(pagesmthtxt); // 计算分页导航显示数量 var pagesnavnum = ""; for(var i=1;i<=pagesmth;i++){ pagesnavnum = pagesnavnum + ""+i+""; }; $this.find(".pagesnum").append(pagesnavnum).find("a:first").addclass("pagecur"); //判断是否显示省略号 if($navmth < pagesmth){ $this.find("span.ellipsis:last").show(); var relnavmth = $navmth - 1; $this.find(".pagesnum a").filter(":gt("+relnavmth+")").hide(); }else{ $this.find("span.ellipsis:last").hide(); }; /*默认显示已完成,下面是控制区域代码*/ //跳转页面 var $input = $this.find(".pagination #pagenum"); var $submit = $this.find(".pagination .pagenumok"); //跳转页面文本框 $input.keyup(function(){ var pattern_d = /^\d+$/; //全数字正则 if(!pattern_d.exec($input.val())) { alert("友情提示:\n\n请填写正确的数字!"); $input.focus().val(""); return false }; }); //跳转页面确定按钮 $submit.click(function(){ if($input.val() == ""){ alert("友情提示:\n\n请填写您要跳转到第几页!"); $input.focus().val(""); return false }if($input.val() > pagesmth){ alert("友情提示:\n\n您跳转的页面不存在!"); $input.focus().val(""); return false }else{ showpages($input.val()); }; }); //导航控制分页 var $pagesnav = $this.find(".pagesnum a"); //导航指向 var $pagesfrist = $this.find(".homepage"); //首页 var $pageslast = $this.find(".lastpage"); //尾页 var $pagesprev = $this.find(".pageprev"); //上一页 var $pagesnext = $this.find(".pagenext"); //下一页 //导航指向 $pagesnav.click(function(){ var navtxt = $(this).text(); showpages(navtxt); }); //首页 $pagesfrist.click(function(){ showpages(1); }); //尾页 $pageslast.click(function(){ showpages(pagesmth); }); //上一页 $pagesprev.click(function(){ var oldnav = $this.find(".pagesnum a[class=pagecur]"); if(oldnav.text() == 1){alert("友情提示:\n\n已经是首页啦!");}else{ var navtxt = parseint(oldnav.text()) - 1; showpages(navtxt); }; }); //下一页 $pagesnext.click(function(){ var oldnav = $this.find(".pagesnum a[class=pagecur]"); if(oldnav.text() == pagesmth){alert("友情提示:\n\n已经是最后一页啦!");}else{ var navtxt = parseint(oldnav.text()) + 1; showpages(navtxt); }; }); // 主体显示隐藏分页函数 function showpages(page){ $pagesnav.each(function(){ var navtext = $(this).text(); if(navtext == page){ $(this).addclass("pagecur").siblings().removeclass("pagecur"); }; }); //显示导航样式 var allmth = pagesmth / $navmth; for(var i=1;i<=allmth;i++){ if(page > (i*$navmth)){ $pagesnav.filter(":gt("+(i*$navmth-1)+")").show(); $pagesnav.filter(":gt("+(i*$navmth-1+$navmth)+")").hide(); $pagesnav.filter(":lt("+(i*$navmth)+")").hide(); $this.find("span.ellipsis:first").show(); }; if(page <= $navmth){ $pagesnav.filter(":gt("+($navmth-1)+")").hide(); $pagesnav.filter(":lt("+$navmth+")").show(); $this.find("span.ellipsis:first").hide(); }; }; // 显示内容区域 var leftpage = $mth * (page-1); var nowpage = $mth * page; $this.find($pagesclass).hide(); $this.find($pagesclass).filter(":lt("+(nowpage)+")").show(); $this.find($pagesclass).filter(":lt("+(leftpage)+")").hide(); }; }; //判断结束 }); //主体代码 }; // 默认参数 $.fn.kkpages.defaults = { pagesclass:'.item', //需要分页的元素 pagesmth:4, //每页显示个数 pagesnavmth:5 //显示导航个数 }; $.fn.kkpages.setdefaults = function(settings) { $.extend( $.fn.kkpages.defaults, settings ); }; })(jquery);