让前端飞Web前端之路我爱编程

jQuery分页

2018-06-21  本文已影响63人  椰果粒
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>分页</title>
    <style>
    table {
        margin: 10px auto;
        /*边框合并为一行*/
        border-collapse: collapse;
        border: 1px solid #E8E8E8;
    }

    table th,
    td {
        padding: 10px;
    }

    .pageStyle {
        display: inline-block;
        text-decoration: none;
        font-size: 14px;
        padding: 0 30px;
        font-family: AppleSystemUIFont;
        color: #606266;
        letter-spacing: 0;
        line-height: 14px;
    }

    .pageStyle.active {
        color: #47C6DB;
        cursor: pointer;
    }

    .page {
        text-align: center;
        margin: 62px auto;
    }

    .left_right {
        display: inline-block;
        width: 6.7px;
        height: 11.3px;
        padding: 0 10px;
    }

    .left_right:hover {
        cursor: pointer;
    }

    .pre_black {
        background: url("./2.png") no-repeat;
    }

    .pre_gray {
        background: url("./1.png") no-repeat;
    }

    .next_black {
        background: url("./2.png") no-repeat;
        -webkit-transform: rotate(180deg);
        -moz-transform: rotate(180deg);
        -ms-transform: rotate(180deg);
        -o-transform: rotate(180deg);
        transform: rotate(180deg);
    }

    .next_gray {
        background: url("./1.png") no-repeat;
        -webkit-transform: rotate(180deg);
        -moz-transform: rotate(180deg);
        -ms-transform: rotate(180deg);
        -o-transform: rotate(180deg);
        transform: rotate(180deg);
    }
    </style>
</head>

<body>
    <table class="message_table product_message" border="1" cellspacing="0">
        <thead>
            <tr class="table_header">
                <th class="one">产品类别</th>
                <th class="two">名称</th>
                <th class="three">描述</th>
            </tr>
        </thead>
        <tbody id="J_TbData"></tbody>
    </table>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
    var data = [
        [
            "水果",
            "苹果",
            "非常甜"
        ],
        [
            "水果",
            "香蕉",
            "软糯可口"
        ],
        [
            "水果",
            "火龙果",
            "甜甜的,软软的"
        ],
        [
            "水果",
            "梨",
            "鲜嫩多汁"
        ],
        [
            "水果",
            "西瓜",
            "又大又甜"
        ],
        [
            "饮料",
            "可乐",
            "黑色的液体"
        ],
        [
            "饮料",
            "雪碧",
            "白色的液体"
        ],
        [
            "饮料",
            "柠檬茶",
            "黄色的液体"
        ],
        [
            "蔬菜",
            "黄瓜",
            "脆生生"
        ],
        [
            "蔬菜",
            "西蓝花",
            "绿色的菜花"
        ],
        [
            "水果",
            "苹果",
            "非常甜"
        ],
        [
            "水果",
            "香蕉",
            "软糯可口"
        ],
        [
            "水果",
            "火龙果",
            "甜甜的,软软的"
        ],
        [
            "水果",
            "梨",
            "鲜嫩多汁"
        ],
        [
            "水果",
            "西瓜",
            "又大又甜"
        ],
        [
            "饮料",
            "可乐",
            "黑色的液体"
        ],
        [
            "饮料",
            "雪碧",
            "白色的液体"
        ],
        [
            "饮料",
            "柠檬茶",
            "黄色的液体"
        ],
        [
            "蔬菜",
            "黄瓜",
            "脆生生"
        ],
        [
            "蔬菜",
            "西蓝花",
            "绿色的菜花"
        ]
    ]

    window.onload = function() {
        // 动态渲染table
        $("#J_TbData").empty();
        for (var i = 0; i < data.length; i++) {
            //动态创建一个tr行标签,并且转换成jQuery对象
            var $trTemp = $("<tr class='table_body'></tr>");
            $trTemp.append("<td>" + data[i][0] + "</td>");
            $trTemp.append("<td>" + data[i][1] + "</td>");
            $trTemp.append("<td>" + data[i][2] + "</td>");
            $trTemp.appendTo("#J_TbData");
        }

        // 分页
        var $table = $('.product_message');
        var currentPage = 0; //当前页默认值为0
        var pageSize = 4; //每一页显示的数目
        $table.bind('paging', function() {
            $table.find('tbody tr').hide().slice(currentPage * pageSize, (currentPage + 1) * pageSize).show();
        });
        var sumRows = $table.find('#J_TbData tr').length; // 总数据
        var sumPages = Math.ceil(sumRows / pageSize); //总页数

        var $pager = $('<div class="page"></div>'); //新建div,放入a标签,显示底部分页码
        var pre = $('<span class="pre left_right pre_gray"></span>')
        var next = $('<span class="next left_right next_black"></span>')
        var next1 = $('<span class="next left_right next_gray"></span>')

        for (var pageIndex = 0; pageIndex < sumPages; pageIndex++) {
            $('<a href="#" class="pageStyle">' +
                    '<span class="no">' + (pageIndex + 1) + '</span>' +
                    '</a>')
                .bind("click", { "newPage": pageIndex }, function(event) {
                    currentPage = event.data["newPage"];
                    $table.trigger("paging");
                    //触发分页函数
                }).appendTo($pager);

            if (sumPages === 1) { // 如果只有一页数据,左右都是灰色
                $pager.append(next1).prepend(pre);
            } else { // 如果有多页数据,左边是灰色,右边是黑色
                $pager.append(next).prepend(pre);
            }
        }
        $pager.insertAfter($table);
        $table.trigger("paging");

        // 给点击的页数添加蓝色
        $('.pageStyle').each(function() {
            $('.pageStyle').eq(0).addClass("active")
            $(this).click(function() {
                $(this).addClass("active").siblings().removeClass("active");
            })
        })
        // 向前点击
        $(".pre").click(function(event) {
            if (currentPage > 0) {
                currentPage -= 1
                $table.trigger("paging");
                $('.pageStyle').eq(currentPage).addClass("active").siblings().removeClass("active")
                $(".next").removeClass("next_gray").addClass("next_black")
                $(".pre").removeClass("pre_gray").addClass("pre_black")
                if (currentPage === 0) {
                    $(".pre").removeClass("pre_black").addClass("pre_gray")
                    $(".next").removeClass("next_gray").addClass("next_black")
                }
            }
        })
        // 点击后一条
        $(".next").click(function(event) {
            if (currentPage < sumPages - 1) {
                currentPage += 1
                $table.trigger("paging");
                $('.pageStyle').eq(currentPage).addClass("active").siblings().removeClass("active")
                $(".next").removeClass("next_gray").addClass("next_black")
                $(".pre").removeClass("pre_gray").addClass("pre_black")
                if (currentPage === (sumPages - 1)) {
                    $(".next").removeClass("next_black").addClass("next_gray")
                    $(".pre").removeClass("pre_gray").addClass("pre_black")
                }
            }
        })
        // 直接点击第几页,对应的next和pre颜色的变化
        $(".pageStyle").click(function(event) {
            if (currentPage >= 1 && currentPage < (sumPages - 1)) { // 在中间
                $(".pre").removeClass("pre_gray").addClass("pre_black")
                $(".next").removeClass("next_gray").addClass("next_black")
            } else if (currentPage === (sumPages - 1)) { // 最后一页
                $(".next").removeClass("next_black").addClass("next_gray")
                $(".pre").removeClass("pre_gray").addClass("pre_black")
            } else { // 在第一页
                $(".pre").removeClass("pre_black").addClass("pre_gray")
                $(".next").removeClass("next_gray").addClass("next_black")
            }
        })
    }
    </script>
</body>
</html>

效果:


效果
上一篇 下一篇

猜你喜欢

热点阅读