因為是內部項目,需要分頁控件,網上找了一大堆,給領導一看,都說不行,原因很簡單,太復雜,領導就想要個簡單點的,類似百度的分頁,可是自己也沒寫過Jquery控件,硬著頭皮找了些資料,寫了這個分頁控件,目前只在Chrome測試,其他的兼容性不知道, 總算也會自己寫插件了, 雖然很爛,但好歹也是進步啊,附上圖片,源碼,也許有人也有同樣的需求可以用得到,歡迎指正,批評!!

CSS:
@charset "utf-8";
* {
    margin:0px;
    padding:0px;
    font-family:"微軟雅黑";
    font-size:14px;
}
._ul {
    float:left;
    height:38px;
    display:block;
}
._ul li {
    list-style-type:none;
    height:36px;
    width:36px;
    border:1px solid #e1e2e3;
    cursor:pointer;
    text-align:center;
    line-height:36px;
    color:blue;
    float:left;
    margin:0 3px;
}
    ._ul li:hover,._before:hover,._after:hover {
        border:1px solid #38f;
        background: #f2f8ff;
    }
.li-hover {
    border:1px solid #38f;
    background: #f2f8ff;
}
._before {
    width:86px;
    height:36px;
    border:1px solid #e1e2e3;
    float:left;
    cursor:pointer;
    text-align:center;
    line-height:36px;
    color:blue;
     margin:0 3px;
}
._after {
    width:86px;
    height:36px;
    border:1px solid #e1e2e3;
    float:left;
    cursor:pointer;
    text-align:center;
    line-height:36px;
    color:blue;
     margin:0 3px;
}
.Hidden {
    display:none;
}
._select {
    border:1px solid #fff !important;
    color:black !important;
}
._left {
    float:left;
    margin-left:200px;
}
._right {
    float:right;
    margin-right:200px;
}
js:
; (function ($, window, document, undefined) {
    var isShow = function (ele,options) {
        this.$element = ele,
        this.defaults = {
            maxpage: 10,
            count: 0,
            total: 0,
            float: 'right',
            margin:'200px',
            getData:null
        },
        this.options = $.extend({}, this.defaults, options)
    }
    isShow.PRototype={
        showDiv:function(){
            this.bindEvent();
        },
        showHtml:function(){
            var _this = this, strHtml = "",count=Math.ceil(_this.options.total / _this.options.count);
            strHtml += "<div  class='"+(_this.options.float=='right'?'_right':'_left')+"'><div class='_before Hidden'><上一頁</div><ul class='_ul'>";
            for (var i = 1; i <= count ; i++) {
                strHtml += "<li data-index='"+(i==1?'frist':i==count?'last':'middle')+"' class='"+(i==1?'_select':'')+" "+(i>_this.options.maxpage?'Hidden':'')+"'>"+i+"</li>";
            }
            strHtml += "</ul><div class='_after'>下一頁></div></div>";
            _this.$element.append(strHtml);
        },
        MoveIndex:function(index){
            var _this = this, _index = this.options.maxpage, count = Math.ceil(_this.options.total / _this.options.count);
            var middle = _index / 2;
            var curr = _this.$element.find("li");
            if (count <= _index) {
                $(curr).show();
            } else {
                var ftemp = 0,ltemp=0;
                if (index < middle)
                    ftemp = (middle - index);
                if (middle > count - index)
                    ltemp=(middle-(count-index));
                $(curr).each(function () {
                    var currindex = parseInt($(this).text());
                    if (currindex > index - middle-ltemp && currindex <= parseInt(index) + parseInt(middle)+ftemp) {
                        $(this).show();
                    } else {
                        $(this).hide();
                    }
                });
            } 
        },
        WhichFind:function(status,_index){
            var _this=this;
            switch (status) {
                case 'frist':
                    _this.$element.find("._before").hide();
                    _this.$element.find("._after").show();
                    break;
                case 'last':
                    _this.$element.find("._after").hide();
                    _this.$element.find("._before").show();
                    break;
                case 'middle':
                    _this.$element.find("div").show();
                    break;
            }
            _this.MoveIndex(_index);
            _this.options.getData({ index: _index });
        },
        bindEvent:function(){
            var _this = this;
            _this.showHtml();
            _this.$element.find("li").click(function () {
                var status = $(this).data("index"), _index = $(this).text();
                $(this).addClass("_select").siblings().removeClass("_select");
                _this.WhichFind(status,_index);
            });
            _this.$element.find("._before").click(function () {
                var status = $("._select").prev().data("index"), _index = $("._select").prev().text();
                $("._select").prev().addClass("_select").siblings().removeClass("_select");
                _this.WhichFind(status,_index);
            });
            _this.$element.find("._after").click(function () {
                var status = $("._select").next().data("index"), _index = $("._select").next().text();
                $("._select").next().addClass("_select").siblings().removeClass("_select");
                _this.WhichFind(status,_index);
            });
        }
    }
    $.fn.FY = function (option) {
        var fs = new isShow(this, option);
        return fs.showDiv();
    }
})(jQuery,window,document);
新聞熱點
疑難解答