关于JQ分页插件的封装

一、简介

  剧情需要,找遍网络没找到合适的,由此想自己封装一个,主要是思路问题,理清思路很重要,这里我的思路采用了一个稍微简单的。

二、代码

  

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>分页插件</title>
</head>
<style type="text/css">
    .box{
        display: flex;
        align-items: center;
        justify-content: space-around;
        width: 60%;
        margin: 0 auto;
    }
    .box span{
        display: flex;
        padding: 5px 10px;
        align-items: center;
        justify-content: center;
        border: 1px solid #000;
        cursor: pointer;
    }
    .pageBox{
        display: flex;
        flex-direction: row;
        justify-content: space-around;
    }
    .pageBox .active{
        background: #000;
        color: #fff;
    }
</style>
<body>
    <div class="box" id="pagebox">
        <span class="prev">上一页</span>
        <div class="pageBox">
            <span class="active">1</span>
            <span>2</span>
            <span>3</span>
            <span>4</span>
            <span>5</span>
        </div>
        <span class="next">下一页</span>
    </div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script>
    (function($){
        $.Init = function(params){
            var defaults = {
                //根元素
                el:‘#page‘,
                // 当前页
                current:5,
                // 按钮显示个数====设置为单数
                btnSize:5,
                // 每页列表个数
                listSize:10,
                //数据总记录数
                dataSize:300,
                // 回调函数
                callBack:‘callBack‘
            };
            var params = params ? params : {};
            var config = $.extend(defaults,params);
            var pageSize = (config.dataSize%config.listSize ==0) ? (config.dataSize/config.listSize) : parseInt(config.dataSize/config.listSize)+1;
            var nodeList;
            Page(config.current)
            //dom渲染
            function Render(start,end,current){
                var prev = ‘‘,
                    next = ‘‘,
                    str = ‘‘,
                    pageStr = ‘‘;

                prev = "<span class=‘prev‘>上一页</span>";
                next = "<span class=‘next‘>下一页</span>";
                for(var i = start; i<=end; i++){
                    if(i==current){
                        pageStr+="<span class=‘active‘ attr-index=‘"+i+"‘>"+i+"</span>"
                    }else{
                        pageStr+="<span attr-index=‘"+i+"‘>"+i+"</span>"
                    }
                }
                pageStr= "<div class=‘pageBox‘>"+pageStr+"</div>";
                str+= prev+pageStr+next;
                $(config.el).empty().append(str)
                clickFun()
            }
            //判断逻辑
            function Page(current){
                if(current<=0 || current > pageSize){
                    var current = 1
                }else{
                    var current = current
                    if(current <= 2 && current>0){
                        Render(1,5,current)
                    }else if(current>pageSize-2 && current<=pageSize){
                        Render(pageSize-4,pageSize,current)
                    }else{
                        Render(current-2,current+2,current)
                    }
                }
            }
            //绑定click事件
            function clickFun(){
                nodeList = $(".pageBox span");
                $.each(nodeList,function(i,v){
                    $(v).on(‘click‘,function(){
                        var current = parseInt($(this).attr(‘attr-index‘))
                        Page(current)
                    })
                })

                //prev
                $(‘.prev‘).click(function(){
                    var current = parseInt($(‘.active‘).attr(‘attr-index‘))-1;
                    if(current < 1){
                        $(this).css(‘cursor‘,‘not-allowed‘)
                        return false
                    }else{
                        Page(current)
                    }
                })
                //next
                $(‘.next‘).click(function(){
                    var current = parseInt($(‘.active‘).attr(‘attr-index‘))+1;
                    if(current > pageSize){
                        $(this).css(‘cursor‘,‘not-allowed‘)
                        return false
                    }else{
                        Page(current)
                    }
                })
            }
        }
    })(jQuery);
    $.Init({
        el:"#pagebox",
        current:3,
    })
</script>
</html>

原文地址:https://www.cnblogs.com/helloNico/p/11107431.html

时间: 2024-09-30 19:56:06

关于JQ分页插件的封装的相关文章

JQuery分页插件封装(源码来自百度,自己封装)

最近由于项目的需要,做了一个基于JQuery的表格分页插件封装,部分源码来源百度,经由自己封装完成. 下面是具体代码和说明,仅供参考.第一步可以先将我的HTML,CSS,JS这三部分的代码创建好后先运行看看,下图是文件目录展示. html <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <

封装javascript分页插件——可以使用的测试版(β版)

上一篇测试版的代码我们发现了很多问题,在这一版本中我们将解决.上一版的连接地址:封装javascript分页插件——测试版 最主要的就是修改核心方法: function initTag() { pageModel.$element.html("") var pageTagDynamic = ""; if (pageModel.pageCountTag >= pageModel.pageCount) { pageModel.pageCountTag = page

jq.paginator分页插件稍加修改

样式一: 样式二: 此分页功能在jq.paginator分页插件上稍加修改. 必加模板html: <div id="jqPaginator"> <div id=""></div> </div> js: $.jqPaginator('#id', { totalPages: , visiblePages:, pagesize:, onPageChange: function (index) { //此为回调函数,在点击每个

jq的分页插件(pagination.min.js)

首先引入jq,再引pagination.min.js和pagination.css html: <div id="pagingmix" class="page m-style M-box3"> </div> js: function laodPage(pages,alen){ $(".M-box3").whjPaging({ totalSize: alen, totalPage: pages, callBack: func

github分页插件的业务逻辑

github分页插件查询的业务逻辑: controller层: query封装前端传来的数据 Service层: 1.构建一个PageBounds:当前页(page).查询多少条(pageSize).排序 2.调用dao的查询方法:查询条件,分页参数对象:返回一个PageList或者List 3.service接收到dao的查询结果(结果集.分页对象paginator) 返回的数据: 根据EsasyUI,必须返回rows 和 total,rows为dao曾返回的结果列表,total为分页对象中的

MVC如何使用开源分页插件shenniu.pager.js

最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只能ip访问,没有域名哈哈),其架构组成由:aspnetcore1.0.0+redis+ postgressql+TaskMainForm服务,这个项目在后期会开源出来供大家分享学习,站点地址点这里心声网:一者是目前正在做的后台管理框架一叶子,现目前刚好吧js分页插件shenniu.pager.js写

mybatis常用分页插件,快速分页处理

在未分享整个查询分页的执行代码之前,先了解一下执行流程. 1.总体上是利用mybatis的插件拦截器,在sql执行之前拦截,为查询语句加上limit X X 2.用一个Page对象,贯穿整个执行流程,这个Page对象需要用java编写前端分页组件 3.用一套比较完整的三层entity,dao,service支持这个分页架构 4.这个分页用到的一些辅助类 注:分享的内容较多,这边的话我就不把需要的jar一一列举,大家使用这个分页功能的时候缺少什么就去晚上找什么jar包即可,尽可能用maven包导入

JqueryPagination 分页插件使用说明

JqueryPagination是个简单轻量级的分页插件,使用起来很容易,只要初始化一个实例,并设置总数量.翻页回调函数.其它参数就可以实现无刷新分页功能了 1 首先引入相关js文件: <link href="Scripts/pagination.css" rel="stylesheet" type="text/css" /> <script src="../Scripts/jquery-1.7.2.min.js&qu

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用