jQuery分页插件

页面导航:首页 > 网络编程 > JavaScript > jQuery分页插件

jQuery分页插件

来源: 作者: 时间:2016-02-02 09:58 【

*** jQuery分页插件* +function($){ $ fn pagination = function(options){ 配置参数 var defaults = { totalCount: 100, 总条数 showPage: 5,
/**
 * jQuery分页插件
 */
+function($){
    $.fn.pagination = function(options){
        // 配置参数
        var defaults = {
            totalCount: 100, // 总条数
            showPage: 5, // 显示的页数
            currentPage: 1, // 当前页
            perPage: 10, // 每页显示条数
            callback: function (currentPage, perPage) { // 回调函数
                console.log(currentPage + ':' + perPage);
            }
        };
 
        $.extend(defaults, options || {});
        var totalCount = parseInt(defaults.totalCount),
            showPage = parseInt(defaults.showPage),
            perPage = parseInt(defaults.perPage),
            totalPage = Math.ceil(totalCount / perPage),
            currentPage = parseInt(defaults.currentPage),
            centerSep = Math.ceil(showPage / 2),
            = '';
        // html结构初始化
        showPage = showPage < totalPage ? showPage : totalPage;
        html += '<div class="pagination">';
        html += '<a class="pagination-prev" href="javascript:;">&laquo;</a>';
        html += '<a class="pagination-disabled" href="javascript:;">...</a>';
        for (var i = 1; i <= showPage; i++) {
            html += '<a class="pagination-num" href="javascript:;"></a>';         
        }
        html += '<a class="pagination-disabled" href="javascript:;">...</a>';
        html += '<a class="pagination-next" href="javascript:;">&raquo;</a></div>';
        $(this).html(html);
        
        var $pagination = $(this).find('.pagination'),
            $prev = $pagination.find('.pagination-prev'),
            $next = $pagination.find('.pagination-next'),
            $num = $pagination.find('.pagination-num');
 
        setCurrentPage();
 
        // 事件绑定
        $pagination
            .delegate('.pagination-num', 'click', function(e) {
                currentPage = parseInt($(this).html());
                setCurrentPage();
            })
            .delegate('.pagination-prev', 'click', function(e) {
                currentPage--;
                setCurrentPage();
            })
            .delegate('.pagination-next', 'click', function(e) {
                currentPage++;
                setCurrentPage();
            });
 
        // 根据当前页渲染分页
        function setCurrentPage(){
            currentPage = currentPage > totalPage ? totalPage : currentPage;
            currentPage = currentPage < 1 ? 1 : currentPage;
 
            if(currentPage == 1){
                $prev.addClass('pagination-disabled');
            }else{
                $prev.removeClass('pagination-disabled');
            }
 
            if(currentPage == totalPage){
                $next.addClass('pagination-disabled');
            }else{
                $next.removeClass('pagination-disabled');
            }
 
            if(currentPage - centerSep <= 0){
                $prev.next().addClass('pagination-hidden');
            }else{
                $prev.next().removeClass('pagination-hidden');
            }
            if(currentPage + centerSep > totalPage){
                $next.prev().addClass('pagination-hidden');
            }else{
                $next.prev().removeClass('pagination-hidden');
            }
 
            $num.removeClass('pagination-active').each(function (index, el) {
                if(currentPage - centerSep < 0){
                    index += 1;
                }else if(currentPage + centerSep > totalPage) {
                    index = totalPage - showPage + index + 1;
                }else {
                    index = currentPage - centerSep + index + 1;
                }
                
                if(index == currentPage){
                    $(el).addClass('pagination-active');
                }
                $(el).html(index);
            });
 
            $.isFunction(defaults.callback) && defaults.callback(currentPage, perPage);
        }
    }
}(jQuery);
 
* {
    margin: 0;
    padding: 0;
}
 
.pagination {
    text-align: center;
}
 
.pagination a {
    display: inline-block;
    padding: 5px 15px;
    margin-left: -1px;
    color: #428bca;
    text-decoration: none;
    background-color: #fff;
    border: 1px solid #ddd;
}
 
.pagination a:hover {
    color: #2a6496;
    background-color: #eee;
    border-color: #ddd;
}
 
.pagination .pagination-disabled,
.pagination .pagination-disabled:hover {
    color: #777;
    cursor: default;
    background-color: #fff;
    border-color: #ddd;
}
 
.pagination .pagination-active,
.pagination .pagination-active:hover {
    color: #fff;
    cursor: default;
    background-color: #428bca;
    border-color: #428bca;
}
 
.pagination .pagination-hidden {
    display: none;
}
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<