用jquery编写的分页插件

用jquery编写的分页插件

源码

function _pager_go(total_page) {

    var page_str = $("#_pager_textbox").val();

    var int_expr = /^(\+|-)?\d+$/;

    if (!int_expr.test(page_str)) {

        alert("请输入整数");

        return;

    }



    var go_page = parseInt(page_str);

    if (go_page < 1 || go_page > total_page) {

        alert("跳转页数超出范围");

        return;

    }

    var link_fn_name = $("#_pager_link_fn_name").val();

    eval(link_fn_name + "(" + go_page + ")");

}





$.fn.ss_pager = function (options) {

    var box = $(this);

    var current_page = options.current_page;

    var total_page = options.total_page;

    var link_class_name = options.link_class || "pageitem";

    var text_class_name = options.text_class || "";

    var link_fn_name = options.link_fn || "void";

    var show_pages = options.show_pages || 10;

    var total_size = options.total_size;

    var btn_class_name = options.btn_class || "btn";



    if (current_page <= 1) {

        current_page = 1;

    }



    if (total_size <= 0) {

        $(box).html("<span style='color:red;'>没有记录</span>");

        return;

    }



    function __wprint(iscurrent, index, text) {

        if (!iscurrent) {

            return "<a class='" + link_class_name + "' href='javascript:" + link_fn_name + "(" + index + ")" + "'>" + text + "</a>";

        }

        else {

            return "<a class='" + text_class_name + "'>" + text + "</a>";

        }

    }



    var html_buf = '';

    if (total_size) {

        html_buf += __wprint(true, "", "共有" + total_size + "条记录");

    }



    html_buf += __wprint(current_page - 1 <= 0, current_page - 1, "上一页");

    if (total_page > 1) {

        //开始页码

        var start = 2;

        var end = total_page - 1;

        var _t = parseInt(show_pages / 2) - 1;



        html_buf += __wprint(current_page == 1, 1, 1);

        if (current_page - _t > 1) {

            html_buf += __wprint(true, "", "...");

            start = current_page - _t;

        }



        for (var i = start; i < current_page; i++) {

            html_buf += __wprint(current_page == i, i, i);

            //console.log("前 "+i);

        };



        if (current_page > 1 && current_page < total_page) {

            html_buf += __wprint(true, current_page, current_page);

        }



        if (current_page + _t < total_page - 1) {

            end = current_page + _t;

            //console.log("后 e "+ (current_page+_t));

            //console.log("后 e "+ (total_page-1));

        }



        for (var i = current_page + 1; i <= end; i++) {

            html_buf += __wprint(current_page == i, i, i);

            //console.log("后 "+i);

        };



        if (current_page + _t < total_page - 1) {

            html_buf += __wprint(true, "", "...");

        };

        html_buf += __wprint(current_page == total_page, total_page, total_page);

    }

    else {

        html_buf += __wprint(current_page == 1, 1, 1);

    }





    html_buf += __wprint(current_page + 1 > total_page, current_page + 1, "下一页");



    html_buf += ("<a class='" + text_class_name + "'> <input type='text' id='_pager_textbox' value='" + current_page + "' />");

    html_buf += ("<input type='hidden' value='" + link_fn_name + "' id='_pager_link_fn_name' />");

    html_buf += ("<input type='button' class='btn' value='转到' id='_pager_button' onclick='_pager_go(" + total_page + ")' /> </a>");



    $(box).html(html_buf);

};

 

你可能感兴趣的:(jquery)