文档章节

推荐一个插件 jqPaginator 分页组件

木云凌
 木云凌
发布于 2017/09/07 12:12
字数 1350
阅读 847
收藏 0

        首先给链接:http://jqpaginator.keenwon.com/ ,好像是作者的网站来的,随时下载,有源码。

        链接给完后,先来聊聊我对前端插件集成的看法,有不同见解的可以留言交流。

        我业余的时候在做一个自己设计的网站,目的有俩:一、设计一个自己的产品;二、实践自己的架构理念(有些想法在工作的项目中很难加进去,因为已有其他在用的设计了),这样以后跟朋友聊技术的时候,更有底气一点。

        这个项目并没有使用前端框架,直接就是js、jq和一些其他插件,做到分页的时候,我开始在网上搜寻有哪些好用的分页插件,大都不如人意。有的插件直接集成了table,这样它就直接帮你解决了数据请求和展示以及分页等问题了。但是这样的插件我比较警惕,因为我在想这样的集成度是不是太高了点。这就扯出了我平时主张的一个思想:工具集成必须考虑松耦合。

        写工具的时候,通常第一个想法就是:帮你把所有麻烦都解决了,使用者只需要一步就OK。无需置疑,这样的工具刚开始用的时候确实很爽,毕竟一步包办table和分页。但是高集成往往是高耦合,如果以后出现一些奇葩需求,这种高耦合就成了一个负担。

        我心目中的分页插件是这样的:它只管分页就行了,其他的什么都别管。就是这样,我找到了jqpaginator,它是一个boostrap风格的插件,只需要给他指定一个div元素,js调用一个方法就出来一个默认的分页了,如下:

$('#id').jqPaginator({
    totalPages: 100,
    visiblePages: 10,
    currentPage: 1,
    onPageChange: function (num, type) {
        $('#text').html('当前第' + num + '页');
    }
});

        以至于他的网站上的说明都没几行,因为这货几乎不需要文档,看这个表格就完事了:

参数

参数 默认值 说明
totalPages 0 设置分页的总页数
totalCounts 0 设置分页的总条目数
pageSize 0 设置每一页的条目数
注意:要么设置totalPages,要么设置totalCounts + pageSize,否则报错;设置了totalCounts和pageSize后,会自动计算出totalPages。
currentPage 1 设置当前的页码
visiblePages 7 设置最多显示的页码数(例如有100也,当前第1页,则显示1 - 7页)
disableClass 'disabled' 设置首页,上一页,下一页,末页的“禁用状态”样式
activeClass 'active' 设置当前页码样式
first bootstrap风格 设置“首页”的Html结构
prev bootstrap风格 设置“上一页”的Html结构
next bootstrap风格 设置“下一页”的Html结构
last bootstrap风格 设置“末页”的Html结构
page bootstrap风格 设置页码的Html结构,其中可以使用{{page}}代表当前页,{{totalPages}}代表总页数,{{totalCounts}}代表总条目数(例如:上面的“极简风格”的Demo,就是使用了{{占位符}},并将visiblePages设为1实现的。)
注意:first、prev、next、last。page只要设置一个,其余未设置的会变为空。
wrapper (无) 分页结构的Html包裹,例如:<div class="your class"></div>,一般不会用到
onPageChange (无) 回调函数,当换页时触发(包括初始化第一页的时候),会传入两个参数:
1、“目标页"的页码,Number类型
2、触发类型,可能的值:“init”(初始化),“change”(点击分页)

        它真的完全是我心里所想象的那个插件:只有分页,其他的啥也别管。当然单纯的只有分页肯定是不够好用的,所以它每次点击(页数发生变化时)都会有个回掉函数,我这这里面作判断,然后执行自己的渲染表格的方法就可以了:

onPageChange (无) 回调函数,当换页时触发(包括初始化第一页的时候),会传入两个参数:
1、“目标页"的页码,Number类型
2、触发类型,可能的值:“init”(初始化),“change”(点击分页)

        后来我用它做了进一步封装成通用的分页方法,只有三个参数:1、放置分页元素的id;2、后端传递回来的分页信息;3、需要在页数变化时执行的回调函数中执行的方法名。这样就可以渲染分页到对应的元素,同时,将后端传递过来的分页信息一一配置到插入分页的方法里,并且在回掉函数里使用 eval 方法来执行这个方法即可。每次执行这个方法都会把页码传递过去,方法接受即可。

         这样我就有了一个单纯的分页方法,使用简单并且松耦合。虽然我需要另外处理table的页面渲染,但是这正是我希望获得的自由度啊。如果有必要,再封装一个渲染table的方法则完全不受影响,总比那些一切包办的好吧?

        以上也实践了我的一些简单的思想,也推荐大家使用它,这并不是广告。也许还有更好的插件我还没了解到,如果有的话,也会学习和推荐。

© 著作权归作者所有

共有 人打赏支持
木云凌

木云凌

粉丝 14
博文 84
码字总数 30709
作品 0
广州
高级程序员
私信 提问
基于jquery的自定义分页控件--jqPaginator

效果截图: 现在网上各种各样的分页组件很多,但是很难找到十分“称心如意”的,于是jqPaginator诞生了。 我心中理想的分页组件,要不受CSS框架限制,可以使用在各种不同风格中的网页中。以我...

semanwmj
2014/05/11
25.3K
1
分页插件(基于jq和bootstrap)

感兴趣的可以下来自己看看:https://github.com/jx915/jqPaginator 一:引入js以及bootstrap.css文件 二:html 三:js 1.初始化 2.可以作为公共函数用来初始化 3.分页点击函数 效果图:分页 ...

天空影
2017/10/27
0
0
Mybatis分页插件PageHelper

在实际的项目开发中,常常需要使用到分页,分页方式分为两种:前端分页和后端分页。 前端分页:一次请求数据的所有记录,然后在前端缓存并且计算和分页逻辑,一般前端组件(例如dataTable)会提...

ben4
2018/03/14
0
0
推荐一款Mybatis分页插件

推荐一款Mybatis分页插件 以前也写过一篇博文介绍Mybatis的插件,以及如何通过Mybatis的插件功能实现一个自定义的分页插件,但是那个插件的侵入性是比较大的。前段时间遇到了一款开源的Mybat...

elim1
2017/06/01
0
0
Mybatis 分页插件 3.5.0 发布

Mybatis 分页插件 3.5.0 发布,更新内容如下: 增加更丰富的调用方法#23 参数中的reasonable、pageSizeZero都可以覆盖默认配置,如果传null会用默认配置。 startPage(int pageNum, int pageS...

Liuzh_533
2015/01/12
3.3K
14

没有更多内容

加载失败,请刷新页面

加载更多

如何限制用户仅通过HTTPS方式访问OSS?

一、当前存在的问题 当前OSS支持用户使用HTTPS/HTTP协议访问Bucket。但由于HTTP存在安全漏洞。大型企业客户都要求使用HTTPS方式访问OSS,并且拒绝HTTP访问请求。 目前OSS可以通过RAM policy方...

阿里云官方博客
24分钟前
2
0
详解深度学习之经典网络架构——LeNet

一、基本简介 LeNet-5出自论文Gradient-Based Learning Applied to Document Recognition,是一种用于手写体字符识别的非常高效的卷积神经网络。 二、LeNet网络的基本结构 LeNet5 这个网络虽...

AI女神
27分钟前
3
0
日志服务Python消费组实战(二):实时分发数据

场景目标 使用日志服务的Web-tracking、logtail(文件极简)、syslog等收集上来的日志经常存在各种各样的格式,我们需要针对特定的日志(例如topic)进行一定的分发到特定的logstore中处理和...

阿里云云栖社区
28分钟前
3
0
LVM 增加磁盘扩容

sudo parted /dev/sdeparted> mklabel gptparted> mkpart primary lvm ext4 %0 %100parted> printsudo lvmlvm> pvcreate /dev/sde1lvm> vgextend vg-data /dev/sde1lvm> lve......

仪山湖
31分钟前
1
0
Linux挂载本地iso镜像,不联网使用yum命令

上传iso镜像文件到/mnt 目录下 在/mnt目录下创建Server目录 mkdir Server 备份 /etc/yum.repos.d/目录下的repo文件 cd /etc/yum.repos.dmkdir repobakmv *.repo repobak/ 挂载本地iso文件...

AustinYe
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部