| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | ;(function ($, window, document, undefined) {    'use strict';    function Paging(element, options) {        this.element = element;        this.options = {            nowPage: options.nowPage || 1, // 当前页码            pageNum: options.pageNum, // 总页码            buttonNum: (options.buttonNum>=5?options.buttonNum:5) || 7,// 页面显示页码数量            callback: options.callback // 回调函数        };        this.init();    }    Paging.prototype =  {        constructor : Paging,        init : function() {            this.createHtml();            this.bindClickEvent();            this.disabled();        },        createHtml : function(){            var me = this;            var nowPage = this.options.nowPage;            var pageNum = this.options.pageNum;            var buttonNum = this.options.buttonNum;            var content = [];            content.push("<ul>");            content.push("<li class='xl-prevPage'>上一页</li>");            //页面总数小于等于当前要展示页数总数,展示所有页面            if(pageNum <= buttonNum){                for(var i=1; i<=pageNum; i++){                    if (nowPage !== i) {                        content.push("<li>"+i+"</li>");                    } else {                        content.push("<li class='xl-active'>"+i+"</li>");                    }                }            }else if(nowPage <= Math.floor(buttonNum / 2)){                //当前页面小于等于展示页数总数的一半(向下取整),从1开始                for(var i=1;i<= buttonNum-2;i++){                    if (nowPage !== i) {                        content.push("<li>"+i+"</li>");                    } else {                        content.push("<li class='xl-active'>"+i+"</li>");                    }                }                content.push("<li class='xl-disabled'>...</li>");                content.push("<li>" + pageNum + "</li>");            }else  if(pageNum - nowPage <= Math.floor(buttonNum / 2)){                //当前页面大于展示页数总数的一半(向下取整)                content.push("<li>"+1+"</li>");                content.push("<li class='xl-disabled'>...</li>");                for(var i=pageNum-buttonNum+3; i<=pageNum; i++){                    if (nowPage !== i) {                        content.push("<li>"+i+"</li>");                    } else {                        content.push("<li class='xl-active'>"+i+"</li>");                    }                }            }else{                //前半部分页码                if(nowPage - Math.floor(buttonNum / 2) <= 0){                    for(var i=1;i<= Math.floor(buttonNum / 2);i++){                        if (nowPage !== i) {                            content.push("<li>"+i+"</li>");                        } else {                            content.push("<li class='xl-active'>"+i+"</li>");                        }                    }                }else{                    content.push("<li>"+1+"</li>");                    content.push("<li class='xl-disabled'>...</li>");                    for(var i=nowPage-Math.floor(buttonNum / 2)+(buttonNum % 2 == 0 ? 3: 2); i<=nowPage; i++){                        if (nowPage !== i) {                            content.push("<li>"+i+"</li>");                        } else {                            content.push("<li class='xl-active'>"+i+"</li>");                        }                    }                }                //后半部分页码                if(pageNum - nowPage <= 0){                    for(var i=nowPage+1;i<=pageNum;i++){                        content.push("<li>" + i + "</li>");                    }                }else{                    for(var i=nowPage+1; i<=nowPage+Math.floor(buttonNum / 2)-2; i++){                        content.push("<li>"+i+"</li>");                    }                    content.push("<li class='xl-disabled'>...</li>");                    content.push("<li>" + pageNum + "</li>");                }            }            content.push("<li class='xl-nextPage'>下一页</li>");            content.push("</ul>");            me.element.html(content.join(''));             // DOM重新生成后每次调用是否禁用button            setTimeout(function () {                me.disabled();            }, 20);                    },        bindClickEvent: function(){            var me = this;            me.element.off('click', 'li');            me.element.on('click', 'li', function () {                var cla = $(this).attr('class');                var num = parseInt($(this).html());                var nowPage = me.options.nowPage;                if( $(this).hasClass('xl-disabled')){                    return ;                }                if (cla === 'xl-prevPage') {                    if (nowPage !== 1) {                        me.options.nowPage -= 1;                    }                } else if (cla === 'xl-nextPage') {                    if (nowPage !== me.options.pageNum) {                        me.options.nowPage += 1;                    }                }else {                    me.options.nowPage = num;                }                me.createHtml();                if (me.options.callback) {                    me.options.callback(me.options.nowPage);                }            });        },        disabled: function () {            var me = this;            var nowPage = me.options.nowPage;            var pageNum = me.options.pageNum;            if (nowPage === 1) {                me.element.children().children('.xl-prevPage').addClass('xl-disabled');            } else if (nowPage === pageNum) {                me.element.children().children('.xl-nextPage').addClass('xl-disabled');            }        }    }    $.fn.paging = function (options) {        return new Paging($(this), options);    }})(jQuery, window, document);
 |