一款基于jQuery的分页插件

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

1、效果示例

2、代码样式

/*
* 基于jquery 分页插件
* by [email protected]
*/
$(function (){
    window.pageUtil = {
        /**
         * 构建分页
         * @param {Object} divId 要绑定的容器
         * @param {Object} data 查询数据
         * @param {Object} args 参数信息
         */
        page : function(divId, data, args){
            var pager = $(divId);
            var pageInfo = (!data || !data.data)?{"currPage":0,"pageSize":10,"pageTotal":0,"recordTotal":0,"prevPage":0,"nextPage":0,"firstPage":0,"lastPage":0}:data.data;
            pageInfo.pageTotal = this.getPageTotal(pageInfo);
            var html = "<table><tbody><tr>";
            if(!args.hidePageSelect){
                html+=‘<td>显示行数</td>‘;
                html+=‘<td>‘;
                if(!args.pageSelect){
                    html+=this.getPageSelect([10, 20, 50],pageInfo.pageSize);
                }else{
                    html+=this.getPageSelect(args.pageSelect, pageInfo.pageSize);
                }
                html+=‘</td>‘;
            }
            html+=‘<td>共‘+pageInfo.pageTotal+‘页,</td>‘;
            html+=‘<td>转到</td><td><input type="text" value="‘+pageInfo.currPage+‘" size="5" class="page-turn"></td>‘;
            html+=‘<td>页 第‘+this.getRowRange(pageInfo)+‘项</td>‘;
            html+=‘<td>,共‘+pageInfo.recordTotal+‘项</td>‘;
            html+=‘<td>‘;
            if(pageInfo.currPage == 1){
                html+=‘<input type="button" value="Prev" class="page-prev page-button-disable">‘;
            }else{
                html+=‘<input type="button" value="Prev" class="page-prev">‘;
            }
            if(pageInfo.currPage == pageInfo.pageTotal){
                html+=‘<input type="button" value="Next" class="page-next page-button-disable">‘;
            }else{
                html+=‘<input type="button" value="Next" class="page-next">‘;
            }
            html+=‘</td>‘;
            html+=‘</tr></tbody></table>‘;
            pager.html(html);
            pager.find(".page-select").off("change").bind("change", function(){
                if(args.query){
                    args.query(1, $(this).val());
                }
            });
            pager.find(".page-turn").off("keypress").bind("keypress", function(event){
                if(event.keyCode == "13" && args.query){
                    var pages = $(this).val();
                    if(/^\+?[1-9][0-9]*$/.test(pages) && (pages*1> 0 && pages*1 <= pageInfo.pageTotal)){
                        args.query(pages, pageInfo.pageSize);
                    }else{
                        alert("请输入1~"+pageInfo.pageTotal+"的数字.");
                    }
                }
            });
            pager.find(".page-prev").off("click").bind("click", function(){
                if(args.query && !$(this).hasClass("page-button-disable")){
                    args.query(pageInfo.currPage-1, pageInfo.pageSize);
                }
            });
            pager.find(".page-next").off("click").bind("click", function(){
                if(args.query && !$(this).hasClass("page-button-disable")){
                    args.query(pageInfo.currPage+1, pageInfo.pageSize);
                }
            });
        },
        /**
         * 获取总页数
         * @param {Object} data
         */
        getPageTotal : function(data){
            if(data.recordTotal == 0){
                return 0;
            }
            if(data.recordTotal%data.pageSize == 0){
                return data.recordTotal/data.pageSize;
            }else{
                return parseInt(data.recordTotal/data.pageSize)+1;
            }
        },
        /**
         * 获取当前数据行数范围
         * @param {Object} data
         */
        getRowRange : function(data){
            if(data.recordTotal == 0){
                return "0-0";
            }
            if(data.currPage < data.pageTotal){
                return ((data.currPage-1)*data.pageSize+1)+"-"+(data.currPage)*data.pageSize;
            }else{
                return ((data.currPage-1)*data.pageSize+1)+"-"+(data.recordTotal);
            }
        },
        /**
         * 构建分页下拉框
         * @param {Object} pageSelect 分页条数
         * @param {Object} pageSize 一页大小
         */
        getPageSelect : function(pageSelect, pageSize){
            var pageSel = ‘<select class="page-select">‘;
            for(var i in pageSelect){
                if(pageSelect[i] == pageSize){
                    pageSel+="<option selected=‘selected‘ value="+pageSelect[i]+">"+pageSelect[i]+"</option>";
                }else{
                    pageSel+="<option value="+pageSelect[i]+">"+pageSelect[i]+"</option>";
                }
            }
            return pageSel+"</select>";
        }
    };
});

3、资料下载

page-demo.rar

时间: 2024-12-26 14:56:01

一款基于jQuery的分页插件的相关文章

两款基于Jquery的图表插件

一.EasyPieChart 页面加载时,运行initPieChart()函数,调用easyPieChart()函数,显示出图表. 代码: var initPieChart = function() { $('.percentage').easyPieChart({ animate: 1000 }); $('.percentage-light').easyPieChart({ barColor: function(percent) { percent /= 100; return "rgb(&q

基于jquery下拉列表树插件代码

分享一款基于jquery下拉列表树插件代码.这是一款实用的jquery 树形下拉框 下拉树代码下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <table width="100%" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="1" bgcolor="#FF

8款基于Jquery的WEB前端动画特效

1.超炫酷的30个jQuery按钮悬停动画 按钮插件是最常见的jQuery插件之一,因为它用途广泛,而且配置起来最为方便.今天我们要分享的是30个超炫酷的jQuery悬停按钮动画,当我们将鼠标滑过按钮时,按钮的背景就会播放不同的动画特效.这款jQuery按钮插件的使用方法也很简单,给按钮指定一个类,然后用一行JS代码初始化即可. 在线演示 源码下载 2.HTML5 Canvas水波纹动画特效 HTML5的Canvas特性非常实用,我们不仅可以在Canvas画布上绘制各种图形,也可以制作绚丽的动画

推荐20款基于 jQuery &amp; CSS 的文本效果插件

jQuery 和 CSS 可以说是设计和开发行业的一次革命.这一切如此简单,快捷的一站式服务.jQuery 允许你在你的网页中添加一些真正令人惊叹的东西而不用付出很大的努力,要感谢那些优秀的 jQuery 插件. 所以今天我们将展示一些很酷的文本效果插件,将帮助你为你的 Web 页面创建一些很酷的和动态的东西.这里是20个基于 jQuery & CSS 的文本效果插件. 您可能感兴趣的相关文章 12款经典的白富美型 jQuery 图片轮播插件 让网站动起来!12款优秀的 jQuery 动画插件

一款基于jQuery的图片分组切换焦点图插件

这是一款基于jQuery的图片切换焦点图插件,这款jQuery焦点图插件的特点是图片可以分组切换,也就是说一次可以切换多张图片,相比其他焦点图插件,它能节省更多的空间,可以向用户展示更多的图片,非常实用. 在线预览   源码下载 实现的代码. html代码: <div class="device"> <h2> <a href="javascript:;" class="pre">上一组</a><

一款基于jQuery可放大预览的图片滑块插件

今天给大家分享一款基于jQuery可放大预览的图片滑块插件.这款jQuery焦点图插件的特点是可以横向左右滑动图片,并且点击图片可以进行放大预览,唯一的缺陷是这款焦点图并不能循环切换,如果你有较好的JavaScript功底,可以自己修改代码来实现这一功能.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="slider"> <div class="spic"> <img src="images

10款基于jQuery的图片滑块焦点图插件

1.Material UI – Material Design CSS 框架 Material Design 是谷歌推出的全新的设计理念,采用大胆的色彩.流畅的动画播放,以及卡片式的简洁设计.Material Design 风格的设计拥有干净的排版和简单的布局,容易理解,内容才是焦点.Material UI 是一个 CSS 框架和一组实现谷歌 Material Design 设计规范的 React 组件.可以作为 NPM 安装包,使用 browserify 和 reactify 的依赖管理和 J

分享10款基于jquery和css3的web前端的动画特效

1.响应式圆形动画导航菜单 响应式的移动导航栏,现在我发现了一个新的技术(有关HTML5)可以在没有使用Javascript的情况下做一个响应式菜单.这个菜单可以自动排列到左边.中间或者右边).不像之前的教程需要点击某"开关"来显示或隐藏菜单,现在只需要把鼠标移到菜单按钮就会出现菜单列表(而且会提示当前所在的导航位置). 在线演示 源码下载 2.Canvas 示例:4种超炫的网站动画背景效果 今天,我们想分享一些动画背景的灵感.全屏背景图片的网站头部是最新的网页设计趋势,已经持续了一段

10款基于jquery的web前端动画特效

1.jQuery横向手风琴图片切换动画 之前我们为大家分享过很多款基于jQuery和CSS3的手风琴菜单和手风琴焦点图插件,比如CSS3响应式垂直手风琴菜单和jQuery横向手风琴图片展示插件.今天要介绍的也是一款基于jQuery的横向手风琴图片切换动画,鼠标滑过图片时即可展开,并且图片上方有文字标题,非常实用. 在线演示 源码下载 2.jQuery/CSS3渐变颜色拾取器 之前我们向大家分享过一款功能十分强大的jQuery颜色拾取器,支持透明度的选取.今天要为大家介绍的同样是一款基于jQuer