jquery 封装的分页插件(包括上一页,下一页,跳转)

这篇具有很好参考价值的文章主要介绍了jquery 封装的分页插件(包括上一页,下一页,跳转)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jquery 封装的分页插件(包括上一页,下一页,跳转)

pagnation.js

(function (factory) {
    if (typeof define === "function" && (define.amd || define.cmd) && !jQuery) {
        // AMD或CMD
        define(["jquery"], factory);
    } else if (typeof module === 'object' && module.exports) {
        // Node/CommonJS
        module.exports = function (root, jQuery) {
            if (jQuery === undefined) {
                if (typeof window !== 'undefined') {
                    jQuery = require('jquery');
                } else {
                    jQuery = require('jquery')(root);
                }
            }
            factory(jQuery);
            return jQuery;
        };
    } else {
        //Browser globals
        factory(jQuery);
    }
}(function ($) {

    //配置参数
    var defaults = {
        total: 0, //数据总条数
        pageSize: 10, //每页显示的条数,默认10条
        currentPage: 1, //当前第几页
        pageCount:0, // 总页数
        pagerCount: 7, //设置最大页码按钮数。 页码按钮的数量,当总页数超过该值时会折叠
        useJump: false, //是否启动跳转
        useTotal:false,// 显示所有条数
        callback: function () {} //回调
    };

    var Pagination = function (element, options) {
        //全局变量
        var opts = options, //配置
            current, //当前页
            $document = $(document),
            $obj = $(element); //容器
            
            opts.pagerCount = 7;
        /**
         * 设置总页数
         * @param {int} page 页码
         * @return opts.pageCount 总页数配置
         */
        this.setPageCount = function (page) {
            return opts.pageCount = page;
        };

        /**
         * 获取总页数
         * 如果配置了总条数和每页显示条数,将会自动计算总页数并略过总页数配置,反之为0
         * @return {int} 总页数
         */
        this.getPageCount = function () {
            return opts.total && opts.pageSize ? Math.ceil(parseInt(opts.total) / opts.pageSize) : opts.pageCount;
        };

        /**
         * 获取当前页
         * @return {int} 当前页码
         */
        this.getCurrent = function () {
            return current;
        };

        /**
         * 填充数据
         * @param {int} 页码
         */
        this.filling = function (index) {
            var html = '';
            if(opts.total>0){
	            current = parseInt(index) || parseInt(opts.currentPage); //当前页码
	            var pageCount = this.getPageCount(); //获取的总页数
	            if(current>pageCount){
	                current = pageCount
	            }
	            if(current<=0){
	                current=1
	            }
	            if (opts.useTotal) {
	                html += "<span style='color:#999999;margin-right:10px;'>共" + opts.total + "条</span>"
	            }
	            if(opts.pagerCount<pageCount){
	               // 这是表明超过了设置最大页码按钮数
	               // 1.以当前页码为中心,获取可加减的距离(最大页码按钮数-1)/2,
	               const stepSize = (opts.pagerCount-1)/2; // 获取步长
	               let start = 0;
	               let end = 0;
	               // 先判断他的起始点
	               if(pageCount-current>stepSize){
	                // 如果当前页减去第一页大于步长,那么就以current为中心
	                if(current-1>stepSize){
	                    start= current-stepSize+1
	                    end = current+stepSize-1
	                }
	                // 如果当前页减去第一页小于或等于步长
	                if(current-1<=stepSize){
	                    start= 1;
	                    end = current + (stepSize-current+1) + stepSize-1
	                }
	               }else{
	                end = pageCount;
	                if(end-current<stepSize){
	                    if(end-current===0){
	                        start = end -(stepSize*2)+1
	                    } else {
	                        // end-current 获取最后页码到当前页的距离,用来计算剩下的步长
	                        start = current-(stepSize-(end-current))-stepSize+1;
	                    }
	                    
	                } else {
	                    start = current-stepSize+1;
	                }
	                
	               }
	               if(current >1 && current <= pageCount) {
	                    html+= "<span class='s-up s-span s-ts'>上一页</span>"
	                }
	               // 如果开始大于1,那么就要添加1和省略号
	               if(start>1){
	                html+= "<span class='s-span s-count s-ts'>1</span><span class='s-span s-sl-one s-ts'>···</span>"
	               }
	               for(;start<=end;start++){
	                html+= current===start? "<span class='s-active s-span s-count s-ts'>" + (start)+"</span>" : "<span class='s-span s-count s-ts'>" + (start)+"</span>"
	               }
	               // 如果结束小于总页数,那么就要添加总页数结束和添加省略号
	               if(end<pageCount){
	                html+= "<span class='s-span s-sl-two s-ts'>···</span><span class='s-span s-count s-ts'>" + pageCount +"</span>"
	               }
	            } else {
	               // 这是总页数pageCount小于设置最大页码按钮数opts.pagerCount
	               for(let s=0;s<pageCount;s++){
	                html+= current===s+1? "<span class='s-active s-span s-ts s-count'>" + (s+1)+"</span>" : "<span class='s-span s-count'>" + (s+1)+"</span>"
	               }
	            }
	
	            if(current < pageCount) {
	                html+= "<span class='s-next s-span s-ts'>下一页</span>"
	            }
	            if(opts.useJump){
	                html+='<input type="text" class="s-t-jump s-ts" value='+ current +'>';
	            }
            }
            $obj.empty().html(html);
        };

        //绑定事件
        this.eventBind = function () {
            var that = this;
            var pageCount = that.getPageCount(); //总页数
            var index = 1;
            // 点击跳转指定页
            $obj.off().on('click', '.s-count', function () {
                index = $(this).html()
                that.filling(index);
                typeof opts.callback === 'function' && opts.callback(that);
            });
            //输入跳转的页码
            $obj.on('blur propertychange', '.s-t-jump', function () {
                var $this = $(this);
                var val = $this.val();
                var reg = /[^\d]/g;
                if (reg.test(val)) $this.val(val.replace(reg, ''));
                (parseInt(val) > pageCount) && $this.val(pageCount);
                if (parseInt(val) === 0) $this.val(1); //最小值为1
                that.filling($this.val());
                typeof opts.callback === 'function' && opts.callback(that);
            });
            //回车跳转指定页码
            $document.keydown(function (e) {
                if (e.keyCode == 13 && $obj.find('.s-t-jump').val()) {
                    var index = parseInt($obj.find('.s-t-jump').val());
                    that.filling(index);
                    typeof opts.callback === 'function' && opts.callback(that);
                }
            });
            // 下一页
            $obj.on('click', '.s-next', function () {
                current = current + 1
                that.filling(current);
                typeof opts.callback === 'function' && opts.callback(that);
            });
            // 上一页
            $obj.on('click', '.s-up', function () {
                current = current - 1
                that.filling(current);
                typeof opts.callback === 'function' && opts.callback(that);
            });
            // 第二个省略号
            $obj.on('mouseenter', '.s-sl-two', function () {
                $('.s-sl-two').html(">>");
            });
            // 下一页更多
            $obj.on('click', '.s-sl-two', function () {
                current = parseFloat($('.s-count').eq("-2").html()) + 2
                that.filling(current);
                typeof opts.callback === 'function' && opts.callback(that);
            });

            // 第一个省略号
            $obj.on('mouseenter', '.s-sl-one', function () {
                $('.s-sl-one').html("<<");
            });
            // 上一页更多
            $obj.on('click', '.s-sl-one', function () {
                current = parseFloat($('.s-count').eq("2").html())-6
                that.filling(current);
                typeof opts.callback === 'function' && opts.callback(that);
            });

        };

        //初始化
        this.init = function () {
            this.filling(opts.current);
            this.eventBind();
        };
        this.init();
    };

    $.fn.pagination = function (parameter, callback) {
        if (typeof parameter == 'function') { //重载
            callback = parameter;
            parameter = {};
        } else {
            parameter = parameter || {};
            callback = callback || function () {};
        }
        // $.extend将两个对象合并
        var options = $.extend({}, defaults, parameter);
        return this.each(function () {
            var pagination = new Pagination(this, options);
            callback(pagination);
        });
    };

}));


cs.html文章来源地址https://www.toymoban.com/news/detail-458102.html

<!DOCTYPE html>
<html lang="cn-ZH">

<head>
    <meta charset="UTF-8">
    <title>pagination.js - 分页</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="../favicon.ico" rel="icon" type="image/x-icon" />
    <!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
    <style>
        .s-active{
            color: #409EFF !important;
        }
        .s-span{
            display: inline-block;
            margin-right:10px;
            cursor: pointer;
            font-size: 16px;
        }
        .s-up,.s-next{
            font-size: 16px;
        }
        .s-up:hover,.s-next:hover{
            color: #409EFF !important;
        }
        .s-t-jump{
            width:50px;
            height:28px;
            border:solid 1px #909399;
            border-radius: 4px;
            font-size: 16px;
            text-align: center;
        }
        input:focus{
            outline: none;
        }

        .s-ts{
            -moz-user-select: none; /*mozilar*/
            -webkit-user-select: none; /*webkit*/
            -ms-user-select: none; /*IE*/
            user-select: none;
        }
    </style>
</head>

<body>
    <div class="wrapper">
        <div class="m-style M-box3"></div>
    </div>
    <script src="https://www.cwgj.xyz/js/jquery.js"></script>
    <script src="../assets/js/pagnation.js"></script>
    <script>
    let pageSize = 10, currentPage=1;
        $(function () {
            getFastModuleItemList()
        });
        function getFastModuleItemList() {
            const info = JSON.parse(Decrypt(localStorage.getItem('MyNote_Login_Info')));
            const data = {
                fast_module_id: activeId,
                name: $(".search-input").val(),
                token: info.token,
                currentPage: currentPage,
                pageSize: pageSize
            }
            httpGet('FastModule/GetFastModuleItemList', { info: Encrypt(JSON.stringify(data)) }, (res) => {
                const datas = JSON.parse(res);
                if (datas.result) {
                    $('.m-pagnation').pagination({
                        total: datas.data2 && datas.data2.length>0 ? Number(datas.data2[0]['Total']) : 0, //数据总条数
                        pageSize: pageSize, //每页显示的条数,默认10条
                        currentPage: currentPage, //当前第几页
                        pageCount: 0, // 总页数
                        pagerCount: 7, //设置最大页码按钮数。 页码按钮的数量,当总页数超过该值时会折叠(最好设置7)
                        useJump: true, //是否启动跳转
                        useTotal:true, // 显示所有条数
                        callback: function (value) {
                            currentPage = value.getCurrent()
                            getFastModuleItemList()
                        }
                    });

                } else {
                    layer.msg(datas.msg, { icon: 5 });
                }
            })
        }
    </script>
</body>

</html>

到了这里,关于jquery 封装的分页插件(包括上一页,下一页,跳转)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatisPlus(SpringBoot版)的分页插件

    目录  一、前置工作:         1.整体项目目录结构         2.创建普通javamaven项目。         3.导入依赖,改造成springboot项目         4.配置启动类         5.创建service接口及其实现类        6.创建接口Mapper                  7.配置数据源         8.创建数

    2024年04月27日
    浏览(42)
  • 微信小程序分页加载功能,结合后端实现上拉底部加载下一页数据,数据加载中和暂无数据提示

    🤵 作者 : coderYYY 🧑 个人简介 :前端程序媛,目前主攻 web前端 ,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐 :《前端项目教程以及代码》 项目开发中,如果请求后端数据过多,我们一般会进行分页处理

    2024年01月25日
    浏览(35)
  • zTree -- jQuery 树插件的使用包括添加、编辑(MVC)

    zTree -- jQuery 树插件网址:https://www.treejs.cn/v3/main.php#_zTreeInfo 自行下载所需要的文件 我自己写的一些具体示例: 使用的.netCore 6 后端使用的ORM框架SqlSugar的中的ToTreeAsync方法返回的需要的数据格式,如果没用SqlSugar可以自己写递归来完成 具体的一些文件的引用根据自己的实际情况

    2024年02月16日
    浏览(41)
  • 【EasyExcel】封装一个分页写数据的通用方法(保姆级),继上一篇easyExcel导出上线后的优化

    需求:通过elasticsearch查询出来一次性写,在大数据量时存在OOM的隐患分页查询、分批次写数据,避免导出大数据量时内存消耗陡增基于elasticsearch分页查询;mybatis-puls同理 在上个博客中解决了线上导出字体依赖的问题,由于涉及的导出模块较多,因为打算封装一个方法做通用

    2024年02月07日
    浏览(38)
  • dedecms 5.7 实现点击图片到下一页

    修改/include/arc.archives.class.php文件 1、查找 “解析模板,对内容里的变动进行赋值” 在这段话上面/**前面添加以下代码。 PHP Code 复制内容到剪贴板 function  ClickPicNext( $ismake =1, $aid , $body )    {    global   $cfg_rewrite ;    if ( $this -NowPage!= $this -TotalPage)    {    $lPage = $this -NowPa

    2023年04月18日
    浏览(53)
  • MybatisPlus的分页插件自动优化LeftJoin语句导致参数不匹配 java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).

    首先会去检查自己传了哪些参数?是否都用上了?反复检查,发现并没有多余的参数: controller里处理条件并传参:  SQL语句  小伙伴说可能是我这sql语句太混乱,甚至还 mybatis和mybatisplus同时使用了!!!  遇事不决,查网友经验:(9条消息) MyBatis-Plus使用分页插件报错,或数

    2024年02月11日
    浏览(84)
  • 关于selenium获取网页下一页的点击事件

    我们对爬虫的使用,肯定是少不了网页的支持啦,这次我们对 2022世界大学学术排名https://www.shanghairanking.cn/rankings/arwu/2022 进行大学排名数据的爬取并且存储进excel,但是这次不细讲爬虫而是只讲selenium的简单使用,所以不对数据进行清洗降噪了 首先你得安装bs4、selenium、pand

    2024年02月01日
    浏览(37)
  • MyBatis的分页原理

    最近看到了一篇MyBatis的分页实现原理,文章里描述到使用ThreadLocal,其实想主要想看看ThreadLocal的巧妙使用,并且看一下分页是如何实现的。 ChaiRongD/Demooo - Gitee.com 其实一个简单的分页如下面代码所示,使用PageHelp对象设置分页的参数,然后把查询到的List对象作为参数传入P

    2024年02月09日
    浏览(36)
  • winform 下一步 上一步 创建向导窗口

    都是一些小技巧。   有时候在做页面时场景需求,界面是一步步引导,使信息完善,最终确定。像wpf,html拥有大量的控件资源可供开发使用,而winform 渐渐没人玩了,开发中遇到一些小技巧就给需要的朋友分享一些。 就像是这个东东。 我采用的是TabControl选项卡来实现。 第一

    2024年02月08日
    浏览(46)
  • JavaWeb12(实现基础分页&模糊查询的分页)

    目录 一. 效果预览 ​编辑 二. 实现基本分页 2.1 分页sql  --每页3条  取第二页 --由于伪列不能作用与大于符号也不能作用于between....and --因此需要将伪列-----名列  2.2 万能公式  2.3 首页上一页下一页实现 ②前端代码 2.4 末页实现优化 ①底层代码 ②前端优化  三.实现模糊查询

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包