文档章节

推荐一个插件 jqPaginator 分页组件

木云凌
 木云凌
发布于 2017/09/07 12:12
字数 1350
阅读 732
收藏 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
博文 82
码字总数 30512
作品 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
03/14
0
0
推荐一款Mybatis分页插件

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

elim1
2017/06/01
0
0
v-page 1.3.0 发布,基于 Vue2 的简洁高效的独立分页组件

v-page 1.3.0版本发布,基于Vue2的简洁高效的独立分页组件 更新内容: 1.3.0: 修复插件页码在部分情况下会消失的问题 1.2.0: 增加插件初始化时就触发分页请求功能 调整内容显示为模板处理 ...

TerryZ
04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用cefSharp实现网页自动注册登录的需要注册的一些事项

最近朋友有个需要自动注册登录点击的事,我帮着写了写,好久没写过这东西了,在写的过程中总结了需要注意的一些事项。 一、换IP之后要测试一下速度,我目前用的最简单的测试方法就是20-30秒加...

我退而结网
25分钟前
1
0
Go语言中使用 BoltDB数据库

boltdb 是使用Go语言编写的开源的键值对数据库,Github的地址如下: https://github.com/boltdb/bolt boltdb 存储数据时 key 和 value 都要求是字节数据,此处需要使用到 序列化和反序列化。...

Oo若离oO
25分钟前
1
0
zookeeper分布式锁

//lock 锁 定义分布式锁public interface Lock {//获取锁public void getLock();//释放锁public void unLock();} public abstract class ZookeeperAbstractLock implements Loc......

熊猫你好
33分钟前
0
0
mysql_事务隔离机制

事务隔离机制 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在mysql中,事务支持是在引擎层实现的。mysql是一个支持多引擎的系统,但并不是所有引擎都支持事务,比如mysql...

grace_233
35分钟前
0
0
不学无数——Java中IO和NIO

JAVA中的I/O和NIO I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其...

不学无数的程序员
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部