• 自编基于jQuery实现分页插件


    $(function(){  
        
    });
    
    /**
        * @params dataUrl:请求数据url地址
        * @params countUrl:请求数据总数url地址
        * @params pageSize:每页显示数据条数
        * @params currentPage:当前页码
        * @params data:查询时的数据[JSON格式]
        * @params pageShowDivId:显示分页内容的div的id属性值
        * @params contentMark:内容信息标记
        * @params pageSkin:分页显示皮肤
        * @params styleType:模板种类[2种可选,1|2]
        * @function customMethod():用户自定义函数,用于给分页中加入用户特有内容
        * LJM
    */
    $.extend({
        page:function(options){
        
            //每次加载时,清空原有内容
            $("#"+options['pageShowDivId']).empty();
            
            //对data属性设置默认初始值
            if(options['data']==null||options['data']==""){
                options['data'] = '';
            }
            
            var reg = /^[0-9]*$/;
            //对currentPage属性设置默认初始值
            if(options['currentPage']==""||options['currentPage']<=0||options['currentPage']==null||!reg.test(parseInt(options['currentPage']))){
                options['currentPage'] = 1;
            }
            
            //对pageSize属性设置默认初始值
            if(options['pageSize']==null||options['pageSize']==""||!reg.test(parseInt(options['pageSize']))){
                options['pageSize'] = 16;
            }
            
            //对contentMark属性设置默认初始值
            if(options['contentMark']==null||options['contentMark']==""){
                options['contentMark'] = '条记录';
            }
            
            //对pageSkin属性设置默认初始值
            if(options['pageSkin']==null||options['pageSkin']==""){
                options['pageSkin'] = '#46c1de';
            }
            
            //对styleType属性设置默认初始值
            if(options['styleType']==null||options['styleType']==""||options['styleType']>2||!reg.test(parseInt(options['styleType']))){
                options['styleType'] = 1;
            }
            
            //请求数据
            $.ajax({
                url:options['dataUrl'],
                data:{pageNo:options['currentPage'],"pageSize":options['pageSize'],searchInfo:JSON.stringify(options['data'])},
                type:'post',
                async:false,
                cache:false,
                dataType:'json',
                success:function(data){
                    //对于数据部分做处理
                    if(null!=data[0].data){
                        
                        if(typeof customMethod != undefined){
                            customMethod(data[0].data);
                        }
                        
    //                    if(jQuery.isFunction(customMethod)){
    //                        customMethod(data[0].data);
    //                    }
                    }
                    
                    //对于总数部分做处理[分页效果展示]
                    if(null!=data[0].count){
                        //页码总数
                        var pageNum = Math.ceil(data[0].count/options['pageSize']);
                        
                        //模板种类1
                        if(options['styleType']==1||options['styleType']>2){
                            //临时当前页变量
    //                        var currentPage = options.currentPage;
                            var currentPage = (pageNum>0)?options.currentPage:0;
                            
                            $("#"+options['pageShowDivId']).append("共<strong>"+pageNum+"</strong>页<strong>"+data[0].count+"</strong>"+options['contentMark']+"&nbsp;&nbsp;当前第<strong>"+currentPage+"</strong>页&nbsp;&nbsp;");
                        
                            //对于上一页按钮的控制
                            if(Number(currentPage)>1){
                                options.currentPage = (Number(currentPage)-1);
                                $("#"+options['pageShowDivId']).append("<a href=javascript:$.page("+JSON.stringify(options)+")>上一页</a>");
                            }else{
                                $("#"+options['pageShowDivId']).append("<span>上一页</span>");                        
                            }
                            
                            //对于下一页按钮的控制
                            if(Number(currentPage)<pageNum){
                                options.currentPage = (Number(currentPage)+1);
                                $("#"+options['pageShowDivId']).append('<a href=javascript:$.page('+JSON.stringify(options)+')>下一页</a>');                        
                            }else{
                                $("#"+options['pageShowDivId']).append("<span>下一页</span>");
                            }
                            
                            //添加自定义跳转按钮
                            $("#"+options['pageShowDivId']).append("<input type='text' id='simopePageTxt' maxLength='5' onChange=$.checkInputNum(this,'"+pageNum+"') onKeyup=$.checkInputNum(this,'"+pageNum+"') /><input type='button' id='simopePageBtn' value='GO' title='GO' canClick='false' onClick=$.turnToPage(this,"+JSON.stringify(options)+",'"+pageNum+"') />");
                            
                            //添加CSS样式[1:引用模板1的样式]
                            $.cssStyle(options['pageShowDivId'],options['pageSkin'],1);
                            
                        }else{
                            //将当前页临时存起来
                            var currentPage = options.currentPage;
                            $("#"+options['pageShowDivId']).append("<strong style='margin-right:10px;letter-spacing:3px;font-size:17px;color:#C2C3C7;'>共"+pageNum+"页</strong>");
                            
                            //对于首页与上一页按钮的控制
                            if(currentPage>1){
                                options.currentPage = 1;
                                $("#"+options['pageShowDivId']).append("<span class='pageCommon' title='首页' onClick=$.page("+JSON.stringify(options)+")>首页</span>");
                                options.currentPage = Number(currentPage)-1;
                                $("#"+options['pageShowDivId']).append("<span class='pageCommon' title='上一页' onClick=$.page("+JSON.stringify(options)+")>上一页</span>");
                            }else{
                                $("#"+options['pageShowDivId']).append("<span>首页</span><span>上一页</span>");
                            }
                            
                            //显示的页码数
                            var numOfPages = 10;
                            //当前页前面的页数
                            var prevPages = (parseInt(currentPage)-4)>0?4:(parseInt(currentPage)-1);
                            //当前页后面的页数
                            var nextPages = (parseInt(prevPages)+5)==9?5:(parseInt(numOfPages)-parseInt(prevPages)-1);
                            
                            //对于总页数小于10页的情况下进行prevPages与nextPages控制
                            if(parseInt(pageNum)<parseInt(numOfPages)){
                                prevPages = parseInt(currentPage) - 1;
                                nextPages = parseInt(pageNum)-parseInt(prevPages)-1;
                            }
                            
                            if(parseInt(currentPage)+parseInt(nextPages)>parseInt(pageNum)&&parseInt(pageNum)>=parseInt(numOfPages)){
                                nextPages = parseInt(pageNum)-parseInt(currentPage);
                                prevPages = parseInt(numOfPages)-parseInt(nextPages)-1;
                            }
                            
                            //当前页码前面的页码数显示
                            for(var i=parseInt(currentPage)-parseInt(prevPages);i<currentPage;i++){
                                options.currentPage = i;
                                $("#"+options['pageShowDivId']).append("<span title='第"+i+"页' class='pageCommon' onClick=$.page("+JSON.stringify(options)+")>"+i+"</span>");
                            }
                            
                            //当前页码后面的页码数显示
                            for(var i=currentPage;i<=parseInt(currentPage)+parseInt(nextPages);i++){
                                if(parseInt(i)==parseInt(currentPage)){
                                    $("#"+options['pageShowDivId']).append("<span title='第"+i+"页' class='pageActive'>"+i+"</span>");
                                }else{
                                    options.currentPage = i;
                                    $("#"+options['pageShowDivId']).append("<span title='第"+i+"页' class='pageCommon' onClick=$.page("+JSON.stringify(options)+")>"+i+"</span>");
                                }
                            }
                            
                            //对于下一页与尾页按钮的控制
                            if(currentPage<pageNum){
                                options.currentPage = Number(currentPage)+1;
                                $("#"+options['pageShowDivId']).append("<span class='pageCommon' title='下一页' onClick=$.page("+JSON.stringify(options)+")>下一页</span>");
                                options.currentPage = pageNum;
                                $("#"+options['pageShowDivId']).append("<span class='pageCommon' title='尾页' onClick=$.page("+JSON.stringify(options)+")>尾页</span>");
                            }else{
                                $("#"+options['pageShowDivId']).append("<span>下一页</span><span>尾页</span>");
                            }
                            
                            //添加自定义跳转按钮
                            $("#"+options['pageShowDivId']).append("<input type='text' id='simopePageTxt' maxLength='5' onChange=$.checkInputNum(this,'"+pageNum+"') onKeyup=$.checkInputNum(this,'"+pageNum+"') /><input type='button' id='simopePageBtn' value='GO' title='GO' canClick='false' onClick=$.turnToPage(this,"+JSON.stringify(options)+",'"+pageNum+"') />");
                            
                            //添加CSS样式[2:引用模板2的样式]
                            $.cssStyle(options['pageShowDivId'],options['pageSkin'],2);
                        }
                    }
                },
                error:function(){
    //                alert("data error")
                }
            }); 
        },
        cssStyle:function(obj,pageSkin,type){
            if(type==1){
                $("#"+obj).find("strong").css({"color":pageSkin,"margin":'0px 4px'});
            
                $("#"+obj).find("span").css({"color":'#D4D0D6',"margin":'0px 5px',"padding":'2px 7px'});
                
                $("#"+obj).find("a").css({"color":pageSkin,"margin":'0px 5px',"padding":'2px 7px'});
                
                $("#"+obj).find("input[type='text']").css({"width":'25px',"height":'17px',"text-align":'center',"border":'1px solid #ccc'});
                
                $("#"+obj).find("input[type='button']").css({"background":pageSkin,"border":'0px',"height":'21px',"margin-left":'5px',"color":'#fff'});
                
                $("#"+obj).find("a").mouseover(function(e){
                    $(this).css({"background":pageSkin,"color":'#FFF'});
                });
                
                $("#"+obj).find("a").mouseout(function(e){
                    $(this).css({"background":'#F0F4FB',"color":pageSkin});
                });
            }else if(type==2){
                $("#"+obj).find("span").css({"color":'#D4D0D6',"margin":'0px 3px',"padding":'5px 10px',"border":'1px solid #E1E2E3'});
                
                $("#"+obj).find("span[class='pageCommon']").css({"color":pageSkin,"cursor":'pointer',"background":'#fff'});
                
                $("#"+obj).find("span[class='pageActive']").css({"color":'#fff',"cursor":'pointer',"background":pageSkin});
                
                $("#"+obj).find("input[type='text']").css({"width":'25px',"height":'25px',"text-align":'center',"border":'1px solid #ccc',"margin-left":'10px'});
                
                $("#"+obj).find("input[type='button']").css({"background":pageSkin,"border":'0px',"height":'28px',"margin-left":'5px',"color":'#fff'});
                
                $("#"+obj).find("span[class='pageCommon']").mouseover(function(){
                    $(this).css({"border-color":pageSkin,"background":'#F2F8FF'});
                });
                
                $("#"+obj).find("span[class='pageCommon']").mouseout(function(){
                    $(this).css({"border-color":'#E1E2E3',"background":'#fff'});
                });
            }
            
        },
        checkInputNum:function(obj,pageNum){
            var reg = /^[0-9]*$/;
            var page = $(obj).val();
            if(!reg.test(page)){
                $(obj).val("");
                $("#simopePageBtn").attr("canClick",'false');
                return;
            }
            
            if(parseInt(page)<=0||parseInt(page)>parseInt(pageNum)){
                $(obj).val("");
                $("#simopePageBtn").attr("canClick",'false');
                return;
            }
            $("#simopePageBtn").attr("canClick",'true');
        },
        turnToPage:function(obj,options,pageNum){
            var flag = $(obj).attr("canClick");
            if(flag=='false'){
                return;
            }
            var pageNo = $("#simopePageTxt").val();
            if(parseInt(pageNo)<=0||parseInt(pageNo)>parseInt(pageNum)){
                return;
            }else{
                $.page({
                    dataUrl:options['dataUrl'],
    //                countUrl:options['countUrl'],
                    data:options['data'],
                    currentPage:Number(pageNo),
                    pageSize:options['pageSize'],
                    pageShowDivId:options['pageShowDivId'],
                    contentMark:options['contentMark'],
                    pageSkin:options['pageSkin'],
                    styleType:options['styleType']
                });
            }
        }
    });

     

    我们都过分崇拜别人的代码,那是因为你在看不在写!!!

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    冒泡排序
    跑马(行转列,列转行)
    选择排序
    day06-迭代器
    day05-装饰器作业
    day07-生成器
    day08-内置函数和匿名函数
    day09-正侧表达式
    144-SpringBoot的编码问题?
    143-SprinBoot如何使用Servlet?
  • 原文地址:https://www.cnblogs.com/JimLy-BUG/p/5026797.html
Copyright © 2020-2023  润新知