简单分页功能的实现

分页功能有很多种实现方法,但是大体原理都是差不多的。
先说下我理解的分页的原理吧。
首先,通过sql语句查询,后台可以得到数据库中所需要数据的总条数,通过limit,也能得到指定范围的数据,这是后台的事。
我们前端大概需要两个参数,一个是当前页(pageNow),一个是每页显示多少条数据(pageSize)。
sql语句limit后面跟着的是所取数据的上界下界。比如说第一页取第一到第十条第二页取十一到20条,就是limit 1,10或者limit 11,20,我们可以通过(pageNow-1)*pageSize+1,pageNow*pageSize,获取到我们需要的数据,这也是后台的事。
还需要得到的一个数据就是总页数,总页数也有很多能得到的方式。比如说100条数据,每页显示10条那就是10页,101条就要11页,总页数(pageCount)就是总条数(Count)/pageSize取上限,javascript中pageCount = Math.ceil(Count/pageSize);
后台如何获得到数据我们前端暂时不用关心,我们只用知道后台需要我们提供给它们当前页pageNow,每页显示条数pageSize,以及我们需要从后台得到的数据,总页数。接下来我们写一个bootstrap的分页。

/*计算总页数开始 */
    function getTotalPage(Count) {
        var pageCount = Math.ceil(Coun / pageSize);
        $("#bootstrapfenye").html("");

/*第一页及上一页 */
        var html = "<nav><ul class='pagination'><li class='herffirst'><a href='#' >&laquo;</a></li>";
        html = html + "<li class='old'><a href='#' >&lt;</a>"

/*动态加载为总页数的标签页 */
        for (var i = 1; i <= pageCount; i++) {
            if (i == 1) {
                html = html + "<li class='aherf active'><a href='#' >" + i+ "</a></li>";
            } else {
                html = html + "<li class='aherf'><a href='#' >" + i+ "</a></li>";
            }
        }
/*下一页及末页 */
        html = html + "<li class='next'><a href='#' >&gt;</a>"
        html = html+ " <li class='herflast'><a href='#' >&raquo;</a></li></ul></nav>";
        $('#bootstrapfenye').append(html);
        return pageCount;
    }
    /*计算总页数结束 */`

`
这时候我们的分页的外观就能显示出来了,接着我们所需要做的就是处理分页时候页面跳转的逻辑。
当页面加载时,默认为第一页。当点击第一页的时候,pageNow变为第一页,当点击末页的时候,pageNow变为与总页数相等的数值。当点下一页的时候,pageNow+1,其余li移除active类,下一页获得active类,上一页同理。接着不管点什么的时候,都做一个判断,先将所有的都移除disabled样式,接着当pageNow=1的时候将第一页上一页都变为disabled,当pageNow=pageCount的时候,将下一页及末页都变为disabled;然后给有disabled样式的元素添加不可点击的事件。

$(function() {
        /*上一页 */
        pageCount  = getTotalPage(Count());
        checkactive(pageCount );
        $("#bootstrapfenye").on("click", ".old", function() {
            if (pageNow > 1) {
                pageNow -= 1;
                /*pagingCount()与pagingList()为两个与后台交互的方法并对得到数据进行处理的方法 */
                pagingCount();
                pagingList();
                $(".aherf").removeClass("active");
                $(".aherf").eq(pageNow - 1).addClass("active");
                checkactive(pageCount)
            }
        });
        /* 下一页*/
        $("#bootstrapfenye").on("click", ".next", function() {
            if (pageNow < pageCount ) {
                pageNow += 1;
                pagingCount();
                pagingList();
                $(".aherf").removeClass("active");
                $(".aherf").eq(pageNow - 1).addClass("active");
                checkactive(pageCount);
            }
        });
        /*第一页 */
        $("#bootstrapfenye").on("click", ".herffirst", function() {
            checkactive(pageCount );
            if (pageNow > 1) {
                pageNow = 1;
                pagingCount();
                $(".aherf").removeClass("active");
                $(".aherf").eq(0).addClass("active");
                pagingList();
                checkactive(pageCount);
            }
        });
        /* 最后一页*/
        $("#bootstrapfenye").on("click", ".herflast", function() {
            if (pageNow < pageCount ) {
                pageNow = pageCount ;
                pagingCount();
                $(".aherf").removeClass("active");
                $(".aherf").eq(pageNow - 1).addClass("active");
                pagingList();
                checkactive(pageCount)
            }
        });
        /* 当前页 */
        $("#bootstrapfenye").on("click", ".aherf", function() {
            $(".aherf").removeClass('active');
            $(this).addClass('active');
            pageNow = $(this).text();
            pagingCount();
            pagingList();
            checkactive(pageCount)
        });
    })

    /*分页判断 */
    function checkactive(obj) {
        var activeNum = $('.active').text();
        $("nav li").removeClass("disabled");
        if (activeNum == 1) {
            $(".old").addClass("disabled");
            $(".herffirst").addClass("disabled");
            disabledclick();
        } else if (activeNum == obj) {
            $(".next").addClass("disabled");
            $(".herflast").addClass("disabled");
            disabledclick();
        }
    }
    /*按钮禁用 */
    function disabledclick() {               $("#bootstrapfenye").on("click",".disabled",function() {
            return false
        })
    }
    /* 分页结束 */

中间存在许多冗余代码,应该还可以继续精简。分页大功能大致就是这么实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值