基于jQuery封装的分页组件(可自定义设置)

逻辑玄冰探
• 阅读 2841

jQuery封装的分页组件

前几天做了一个vue的组件分页,而现在需求是jquery的分页,我就根据我自己的需求写了一个。
在网上找了很久的基于jquery的分页封装,可是都不是我想要的结果,那么今天我就给大家看一下我的这个分页。
你可以自行改变内容代码来达到你的目的,例如:样式的问题,你就可以自行调整css样式。

1.看一下效果

基于jQuery封装的分页组件(可自定义设置)

基于jQuery封装的分页组件(可自定义设置)

2.下面就是具体介绍一下

(1)、首先是css样式(可自行调节)当然你页可以外链一个css,最后会有整体的代码展示!

     body,
        html {
            width: 100%;
            height: 100%;
        }
        
        * {
            margin: 0;
            padding: 0;
        }
        
        .page {
            width: 100%;
            margin: 100px auto;
            height: 34px;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .pages {
            /*width: 80%;*/
            display: block;
            height: 34px;
            position: relative;
            text-align: center;
            overflow: hidden;
        }
        
        .all_data {
            color: #6699FF;
        }
        
        .all_pages {
            color: #6699FF;
        }
        
        .page_left {
            width: 200px;
            height: 32px;
            line-height: 32px;
            font-size: 14px;
            text-align: center;
        }
        
        .page_footer {
            width: 180px;
            height: 35px;
            position: relative;
            margin-left: 24px;
        }
        
        .page_cont>div {
            display: block;
            position: relative;
            float: left;
            line-height: 32px;
            text-align: center;
        }
        
        .hometrailer {
            width: 64px;
            height: 32px;
            background: rgba(255, 255, 255, 1);
            border-radius: 3px;
            border: #E3E3E3 1px solid;
            cursor: pointer;
        }
        
        .updown {
            width: 84px;
            height: 32px;
            background: rgba(255, 255, 255, 1);
            border-radius: 3px;
            border: #E3E3E3 1px solid;
            cursor: pointer;
        }
        
        .page_view {
            height: 32px;
            position: relative;
        }
        
        .page_view ul {
            overflow: hidden;
        }
        
        .li {
            width: 32px;
            height: 32px;
            background: rgba(255, 255, 255, 1);
            border-radius: 3px;
            color: #666;
            float: left;
            list-style: none;
            margin-left: 8px;
            border: #E3E3E3 1px solid;
            cursor: pointer;
        }
        
        .active {
            background: rgba(96, 129, 255, 1)!important;
            color: #fff !important;
        }
        
        .pages>div {
            display: block;
            float: left;
            line-height: 32px;
            text-align: center;
        }
        
        .page_input {
            display: inline-block;
            width: 64px;
            height: 30px;
            background: rgba(255, 255, 255, 1);
            border-radius: 3px;
            border: #E3E3E3 1px solid;
            outline: none;
            font-size: 14px;
            text-align: center;
        }
        
        .page_btn {
            display: inline-block;
            width: 84px;
            height: 32px;
            background: rgba(96, 129, 255, 1);
            border-radius: 3px;
            color: #fff;
            line-height: 32px;
            text-align: center;
            font-size: 14px;
        }
        
        .page_home {
            margin-right: 8px;
        }
        
        .page_trailer {
            margin-left: 8px;
        }
        
        .page_down {
            margin-left: 8px;
            w
        }
        
        .page_down_two {
            margin-left: 8px;
        }

(2)、js代码(你可以在中设置许多需求, 例如:你不需要共有多少页,那么就就可以直接在就是代码中删除)

 function Page(settings) {
   this.settings = settings;
   this.init();
}
//默认配置
Page.prototype = {
    init: function() {
    this.create();
},
create: function() {
   var _template = `<div class="pages">
    <div class="page_left">
        共 <span class="all_data">${this.settings.count}</span> 条信息/共 <span class="all_pages">${this.settings.countPage}</span> 页
        </div>
         <div class="page_cont">
            <div class="hometrailer page_home">首页</div>
            <div class="updown page_up">上一页</div>
            <div class="page_view">
                <ul class="page_view_ul">
                </ul>
            </div>
            <div class="updown page_down">下一页</div>
            <div class=" hometrailer page_trailer">尾页</div>
        </div>
        <div class="page_footer">
            <input type="text" class="page_input" />
            <span>页</span>
            <span class="page_btn">跳转</span>
        </div>
    </div>`;
    $(this.settings.container).append(_template);
    this.refreshDom(this.settings);
    this.bindEvent();
    },
bindEvent: function() {
    var _this = this;
        //跳转首页
    $(this.settings.container).on("click", ".page_home", function() {
        var newpages = 1;
        _this.settings.nowPage = newpages;
        _this.settings.callBack(_this.settings.nowPage)
        _this.refreshDom(this.settings);
    });
    //跳转上一页
    $(this.settings.container).on("click", ".page_up", function() {
        var newpages = _this.settings.nowPage;
        newpages--;
        if(newpages < 1) {
            newpages = 1
            _this.settings.nowPage = newpages
        } else {
            _this.settings.nowPage = newpages
        }
    _this.settings.callBack(_this.settings.nowPage)
        _this.refreshDom(this.settings);
    });
    //跳转下一页
    $(this.settings.container).on("click", ".page_down", function() {
        var newpages = _this.settings.nowPage;
        newpages++;
        if(newpages > _this.settings.countPage) {
            newpages = _this.settings.countPage
            _this.settings.nowPage = newpages
        } else {
            _this.settings.nowPage = newpages
        }
        _this.settings.callBack(_this.settings.nowPage)
        _this.refreshDom(this.settings);
    });
    //跳转末页
    $(this.settings.container).on("click", ".page_trailer", function() {
        var newpages = _this.settings.countPage;
        _this.settings.nowPage = newpages;
        _this.settings.callBack(_this.settings.nowPage)
        _this.refreshDom(this.settings);
    });
    //Go跳转
    $(this.settings.container).on("click", ".page_btn", function() {
        var inputText = $(".page_input").val() - 0;
        if(inputText < 1 || inputText > _this.settings.countPage) {
            alert("输入的页面不正确,请重新输入")
        } else {
            _this.settings.nowPage = inputText;
            _this.settings.callBack(_this.settings.nowPage)
            _this.refreshDom(this.settings);
            //                establish(objpage);
            //外部的ajax
        }
        });
    },
    refreshDom: function() {
        var _this = this;
        $(".li").remove();
        var countPage = this.settings.countPage;
        var showPageCount = this.settings.showPageCount;
        var nowPage = this.settings.nowPage - 0;
        var count = this.settings.count;
        var bian = (showPageCount - 1) / 2;
        $(".all_data").html(count);
        $(".all_pages").html(countPage);
        var html = "";
        if(nowPage - bian <= 0) {
            for(var i = 1; i < showPageCount + 1; i++) {
                var index = i;
                if(nowPage == index) {
                pageHtml = `    <li index="${i}" class="li active">${i}</li>`;
                } else {
                pageHtml = `    <li  index="${i}" class="li">${i}</li>`;
                }
            html += pageHtml;
            }
        } else if(nowPage - bian > 0 && nowPage + bian < countPage) {
            var num = nowPage - bian;
            for(var i = num; i < (num + showPageCount); i++) {
                var index = i;
                if(nowPage == index) {
                    pageHtml = `    <li index="${i}" class="li active">${i}</li>`;
                } else {
                    pageHtml = `    <li  index="${i}" class="li">${i}</li>`;
                }
            html += pageHtml;
            }

        } else if(nowPage + bian >= countPage) {
            var numAll = countPage - showPageCount + 1;
            for(var i = numAll; i < (numAll + showPageCount); i++) {
                var index = i;
                if(nowPage == index) {
                    pageHtml = `    <li index="${i}" class="li active">${i}</li>`;
                } else {
                    pageHtml = `    <li  index="${i}" class="li">${i}</li>`;
                }
            html += pageHtml;
        }
    }

    $(".page_view_ul").append(html)

    $(".li").click(function() {
        _this.settings.nowPage = $(this).attr("index")-0;
            _this.settings.callBack(_this.settings.nowPage)
        _this.refreshDom(this.settings);
    })
    }
};
    var pageInit = function(opts) {
        return new Page(opts);
    };

    window.pageInit = $.pageInit = pageInit;
    
    

(3)、初始化js(具体参数有具体详解,你可已根据你的需求添加新的参数)

    <script type="text/javascript">
        $.pageInit({
            container: '.page', //容器:默认page
            countPage: 20, //一共有多少页
            showPageCount: 5, //显示多少个分页按钮
            nowPage: 1, //当前是第几页
            count: 100, //数据总数
            callBack: function(data) {
                console.log("data___________")
                //当前的页码
                console.log("当前的页码为:"+data)
            }
        });
    </script>

基于jQuery封装的分页组件(可自定义设置)

(4)、html代码(封装好的js和css,直接来看吧!)

 <!DOCTYPE html>
  <html>

    <head>
    <meta charset="UTF-8">
    <title>分页示例</title>
    <style type="text/css">
        body,
        html {
            width: 100%;
            height: 100%;
        }
        
        * {
            margin: 0;
            padding: 0;
        }
        
        .page {
            width: 100%;
            margin: 100px auto;
            height: 34px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
    </style>
    <link rel="stylesheet" type="text/css" href="css/page.css" />
    </head>
    <body>
        <div class="page">

        </div>

        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <script src="js/page.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $.pageInit({
                container: '.page', //容器:默认page
                countPage: 20, //一共有多少页
                showPageCount: 5, //显示多少个分页按钮
                nowPage: 1, //当前是第几页
                count: 100, //数据总数
                callBack: function(data) {
                    console.log("data___________")
                    //当前的页码
                  console.log("当前的页码为:"+data)
                }
            });
        </script>
    </body>

 </html>
 


基于jQuery封装的分页组件(可自定义设置)

  • 最后,如有错误,请大家即使提出,我会及时改正
  • 本人才疏学浅,请大家多多包涵!
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
4年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
4年前
PHP+jQuery寥寥几行代码轻松实现百度搜索那样的无刷新PJAX的分页列表和导航链接
!(https://static.oschina.net/uploads/space/2016/1208/171419_U00R_561214.png)PHP寥寥几行代码轻松实现百度搜索那样的分页列表和导航链接,某些语言的拥趸哭晕在厕所.<?php$apparray('db_prefix''
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
sum墨 sum墨
1年前
《优化接口设计的思路》系列:第八篇—分页接口的设计和优化
分页查询的需求想必大家都做过吧,很简单,无非就是查询SQL后面加上limitpageNum,pageSize,复杂点的话加个排序。虽说它简单吧,但真正封装过分页组件的同学应该也不多吧,很多时候都是上网copy一份或者拿前辈封装好的。这篇文章呢,我就讲一下我是怎么做分页的,以及分页有哪些需要注意的点。