1. 程式人生 > >jquery實現分頁外掛

jquery實現分頁外掛

做個記錄備份下
/**
 * Created by lgy on 2017/12/19.
 * page外掛
 */
(function ($) {
    $.fn.lgypage = function (options) {
        //初始化引數
        var defaults = {
            totalpage:0,    //總頁數
            showpagenum:8,  //預設顯示的頁數
            showlr:"left",   //left:靠左顯示,right: 靠右顯示,center:居中顯示
            curpage: 1 ,    //當前頁
            clickback:"",   //點選回撥事件
            isSearch:true,   //是否顯示數字搜尋欄
            pagenum1:5,    //判斷剩餘頁面數大於值
            pagenum2:3,    //前後差值
            lastpagenum:6,   //最後剩餘數
            isshowpage:true
        };
        var opts = $.extend(defaults, options);
        return this.each(function () {
            var $this = $(this);//獲取當前物件
            refreshhtml(opts.curpage);
            //頁數重新整理
            function refreshhtml(curpage) {
                var showlr="";
                if(opts.showlr=="right"){
                    showlr='style="float:right;"';
                }
                var html='<div class="lgy-table-page">' +
                    '     <ul class="lgy-page-ul" '+showlr+'>';
                //如果總頁面大於預設顯示的頁數
                if(opts.totalpage>opts.showpagenum){
                    var active="";
                    if(curpage==1){
                        active="class=active";
                    }
                    html+='<li '+active+'><a href="javascript:;">1</a></li>';
                    if(curpage<opts.showpagenum){
                        for(var i=1; i<opts.showpagenum;i++){
                            var nownum=i+1;
                            if(curpage==nownum){
                                html+='<li class="active"><a href="javascript:;">'+nownum+'</a></li>';
                            }else{
                                html+='<li><a href="javascript:;">'+nownum+'</a></li>';
                            }
                        }
                        html+='<li>…</li>';
                    }else{
                        //當前頁大於預設頁
                        //剩餘頁面大於5
                        if(opts.totalpage-curpage>opts.pagenum1){
                            html+='<li>…</li>';
                            for(var i=curpage-opts.pagenum2; i<=curpage+opts.pagenum2;i++){
                                if(curpage==i){
                                    html+='<li class="active"><a href="javascript:;">'+i+'</a></li>';
                                }else{
                                    html+='<li><a href="javascript:;">'+i+'</a></li>';
                                }
                            }
                            html+='<li>…</li>';
                        }else{
                            //剩餘頁面小於等於5
                            html+='<li>…</li>';
                            for(var i=opts.totalpage-opts.lastpagenum; i<opts.totalpage;i++){
                                if(curpage==i){
                                    html+='<li class="active"><a href="javascript:;">'+i+'</a></li>';
                                }else{
                                    html+='<li><a href="javascript:;">'+i+'</a></li>';
                                }
                            }
                        }
                    }
                    //如果當前頁是最後一頁
                    var lastactive="";
                    if(curpage==opts.totalpage){
                        lastactive="class=active";
                    }
                    html+='<li '+lastactive+'><a href="javascript:;">'+opts.totalpage+'</a></li>';

                    if(opts.isshowpage){
                        if(curpage>1){
                            html+='<li class="lgy-pre">上一頁</li>';
                        }
                        if(curpage<opts.totalpage){
                            html+='<li class="lgy-next">下一頁</li>';
                        }
                        //是否顯示搜尋欄
                        if(opts.isSearch){
                            html+='<li class="lgy-gopage"><div class="lgy-gopage-p"><span>到第</span> <span><input type="text" class="lgy-input-page" onkeyup="value=value.replace(/[^\\d]/g,\'\')" value="'+curpage+'"></span> <span>頁</span></div><div class="lgy-page-ok">確定</div></li>';
                        }
                    }

                }else{
                    for(var i=1; i<(opts.totalpage+1);i++){
                        if(curpage==i){
                            html+='<li class="active"><a href="javascript:;">'+i+'</a></li>';
                        }else{
                            html+='<li><a href="javascript:;">'+i+'</a></li>';
                        }

                    }
                }
                html+= '</ul></div>';
                $this.html(html);
                if(opts.showlr=="right"){
                    $this.find(".lgy-page-ul li").css({
                        "margin-left":"10px",
                        "margin-right":"0"
                    });
                }else if(opts.showlr=="center"){
                    $this.find(".lgy-table-page").css({
                        "text-align":"center"
                    });
                }
                //頁數點選事件
                $this.find(".lgy-page-ul li a").unbind('click').click(function(){
                    var curnum=parseInt($(this).html());
                    opts.curpage=curnum;
                    //回撥頁數
                    opts.clickback(opts.curpage);
                    refreshhtml(curnum);
                });
                //下一頁點選事件
                $this.find(".lgy-next").unbind('click').click(function(){
                    var curnum=opts.curpage;
                    if(curnum<opts.totalpage){
                        opts.curpage+=1;
                        //回撥頁數
                        opts.clickback(opts.curpage);
                        refreshhtml(opts.curpage);
                    }
                    //refreshhtml(curnum);
                });
                //上一頁點選事件
                $this.find(".lgy-pre").unbind('click').click(function(){
                    var curnum=opts.curpage;
                    if(curnum>1){
                        opts.curpage-=1;
                        //回撥頁數
                        opts.clickback(opts.curpage);
                        refreshhtml(opts.curpage);
                    }
                    //refreshhtml(curnum);
                });
                //確定點選事件
                $this.find(".lgy-page-ok").unbind('click').click(function(){
                    var curnum=parseInt($this.find(".lgy-input-page").val());
                    if(curnum>opts.totalpage){
                        opts.curpage=opts.totalpage;
                    }else if(curnum<1){
                        opts.curpage=1;
                    }else{
                        opts.curpage=curnum;
                    }
                    //回撥頁數
                    opts.clickback(opts.curpage);
                    refreshhtml(opts.curpage);
                });
            }
        });
    };
})(jQuery);

頁面部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分頁外掛</title>
    <link rel="stylesheet" href="css/lgyplug.css" />
</head>
<body>
<div id="page"></div>

<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/jquery.lgypage.min.js"></script>
<script>
    (function(){
        $("#page").lgypage({
            totalpage:50,
            //showlr:"right",
            clickback: function(data){
                console.log("頁數:"+data);
            }
        });
    }());
</script>
</body>
</html>

樣式部分

/*分頁樣式*/
.lgy-table-page{
    width: 100%;
}
.lgy-table-page ul{
    margin: 0;
    padding: 0;
    display: inline-block;
    list-style: none;
}
.lgy-page-ul a{
    text-decoration: none;
    color: #000;
}
.lgy-page-ul li{
    cursor: pointer;
    float: left;
    margin-right:10px;
}
.lgy-page-ul li a{
    width: 30px;
    height: 30px;
    text-align: center;
    line-height: 30px;
    display: block;
    border: 1px solid #ddd;
}
.lgy-page-ul li a:hover{
    border: 1px solid #44b549;
    background-color: #44b549;
    color:#fff;
}
.lgy-page-ul li.active a{
    border: 1px solid #44b549;
    background-color: #44b549;
    color:#fff;
}
.lgy-page-ul li.lgy-pre, .lgy-page-ul li.lgy-next{
    height: 30px;
    line-height: 30px;
    border: 1px solid #ddd;
    padding: 0 10px;
}
.lgy-page-ul li.lgy-pre:hover, .lgy-page-ul li.lgy-next:hover{
    border: 1px solid #44b549;
    background-color: #44b549;
    color:#fff;
}
.lgy-gopage input{
    width: 40px;
    height: 28px;
    text-align: center;
    line-height: 28px;
    border: 1px solid #ddd;
}
.lgy-gopage div{
    float: left;
    margin-left: 10px;
}
.lgy-gopage .lgy-page-ok{
    width: 50px;
    text-align: center;
    height: 30px;
    line-height: 30px;
    border: 1px solid #ddd;
}
.lgy-gopage .lgy-page-ok:hover{
    border: 1px solid #44b549;
    background-color: #44b549;
    color:#fff;
}
.lgy-gopage-p{
    white-space: nowrap;
}
.lgy-gopage-p span{
    float: left;
    height: 32px;
    margin-right: 5px;
    line-height: 32px;
    display: inline-block;
}