mass Framework pagination插件
今天为大家带来mass Framework的分页插件,非常小巧,不到100行。
参数:
- duration
- 必需。Number。一共有多少个需要进行分页的物件(如贴子,图片什么)。
- hash
- 可选。Object。配置对象。
返回值:
mass实例
hash中有如下可选参数:
键名 | 值 |
---|---|
show_last: | 当分页过多时,是否显示最后一页。 |
show_first: | 当分页过多时,是否显示第一页。 |
show_next: | 当分页过多时,是否显示下一页链接。 |
show_prev: | 当分页过多时,是否显示上一页链接。 |
link_class: | 普通分页的类名,默认为link。 |
prev_class: | 上一页链接的类名,默认为prev_page。 |
next_class: | 下一页链接的类名,默认为next_page。 |
prev_text: | 上一页链接的显示文本,默认为下一页>。 |
next_text: | 下一页链接的显示文本,默认为<上一页。 |
curr_page: | 当前页面,注意为了符合普通人的常识,强制最小值是1。 |
per_pages: | 每页显示多少条目(贴子,图片什么的)。 |
show_pages: | 显示多少个页码,默认为10,建议取最中间的那个页码,比如是说11取6,可以确保视觉上的对称性。 |
show_jump: | 是否显示跳转框。默认是false。 |
fill_text: | 当分页过多时,在第一页与显示页之间或者最后一页与显示页之间的用于表示省略的文本,默认是"..." |
callback: | 当点击分页栏中的链接或跳转框时触发的回调,第一个参数是事件对象,第二参数是分页栏对象,第三个参数是页码, this指向当前点击的元素节点。 |
在回调函数中,我们可以调用分页栏对象的render方法重新渲染自身。
例子
<div id="box"></div">
.pagination a , .pagination span{border: 1px solid #9AAFE5;color: #2E6AB1;margin: 0 2px;padding: 2px 5px;text-decoration: none;}.pagination span{background-color: #2E6AB1;border: 1px solid navy;color: #FFFFFF;font-weight: bold;}.pagination input{width:20px;}
$.require("ready,more/pagination",function(){$("#box").pagination(120,{curr_page:7,per_pages:10,show_pages:8,show_jump:true,callback: function(e, ui, i){e.preventDefault();ui.curr_page = i;ui.render();return false;}})})
//by 司徒正美 2012.2.22 $.define("pagination","event",function(){var defaults = {show_last: true,show_first:true,show_prev: true,show_next: true,link_class: "link",prev_class: "prev_page",next_class: "next_page",next_text: "下一页>",prev_text: "<上一页",curr_page: 1,//都是从1开始的per_pages: 10,//每页显示多少条目show_pages:10,//显示多少个页码,建议取最中间的那个页码,比如是说11取6,可以确保视觉上的对称性fill_text:"...",show_jump:false,//是否显示跳转框callback: function(e, ui , i){}}function createLink(tag, index, text, cls){return tag == "a" ? $.format('<#{tag} class="#{cls}" data-page="#{index}" href="?page=#{index}">#{text}<\/#{tag}>',{tag: tag,index: index,text: text,cls: cls}) : text}var Pager = $.factory({init: function( target, total, option ){if( isFinite( total ) ){this.total = total;}else{throw "第一个参数必须是一个正整数"}var opt = $.Object.merge( {}, defaults, option || {});this.target = target;for(var i in opt){this[i] = opt[i];}this.render();},render: function(){var max = this.total_pages = Math.ceil( this.total / this.per_pages),//计算总页数count = this.show_pages = Math.min( this.show_pages, this.total_pages ),//计算还剩下多少页要生成curr = this.curr_page, add_more = false, link = this.link_class;curr = this.curr_page = curr < 1 ? 1 : curr > this.total_pages ? this.total_pages : curr;//生成当前页var html = [ createLink( "span", curr ,curr,"current_page") ], left = curr-1, right = curr + 1;--count ;//当成中间要显示的页while( count > 0 ) {if( left >= 1 && count != 0 ) {//在日常生活是以1开始的html.unshift( createLink( "a", left--, left + 1, link ) );--count}if( right <= max && count != 0 ) {html.push( createLink( "a", right, right++ , link ) );--count;}}var space = left ;if( space > 1 ){//如果有至少两个位置,则可以用它放置第一页与省略号html.unshift( createLink( "code", 0, this.fill_text ) );//添加省略号add_more = true;//如果有省略号肯定能向前翻}if( space >= 1 && this.show_first ) {//只要留有至少一个空位,就可以显示最后一页html.unshift( createLink("a", 1, 1, link ) );}if( add_more && this.show_prev ) {//如果允许显示上一页html.unshift( createLink("a", curr - 1, this.prev_text, this.prev_class ) );}space = max - (right-1), add_more = false;if( space > 1 ) {//如果有至少两个位置,则可以用它放置最后一页与省略号html.push( createLink( "code", 0, this.fill_text ) );//添加省略号add_more = true;//如果有省略号肯定能向后翻}if( space >= 1 && this.show_last ) {//只要留有至少一个空位,就可以显示最后一页html.push( createLink( "a",max, max, link ) );}if( add_more && this.show_next ) {//如果允许显示下一页html.push( createLink( "a", curr + 1, this.next_text, this.next_class ) );}if( this.show_jump ){html.push( "<kbd>跳转到第<input \/>页<\/kbd>" );}html.unshift( '<div class="pagination">' );html.push( '<\/div>' );this.target.html( html.join("") );//每次都会清空目标元素,因此记得找个空标签来放分页栏啊}});$.fn.pagination = function( total, opt ){var ui = new Pager( this, total, opt );return this.delegate("a,input", "click",function(e){if( typeof ui.callback == "function" ){return ui.callback.call( this, e, ui, ~~this.getAttribute("data-page") );}})} });
mass Framework pagination插件相关推荐
- mass Framework switchable插件
最近都忙着写这个插件,用它来统合跑马灯(marquee),轮播(carousel),风手琴(accordion), 切换卡(tabs), slide(幻灯片)这五种控件. 下面是它们的一些描述: 跑马 ...
- mass Framework在后端的核心模块
mass Framework前后通吃,后端是基于node.js组建起来.后端与前端不一样,是依赖于node.js内置模块提供的一些API,因此前端那些依赖于浏览器提供的DOM API的模块无法复用.现 ...
- mass Framework event模块 v4
event.js //========================================== // 事件模块(包括伪事件对象,事件绑定与事件代理) //================= ...
- mass Framework emitter模块
此模块用于提供自定义事件,并把实现此接口的对象变成一个事件发送器. //================================================== // 事件发送器模块 // ...
- mass Framework event模块 v8
最近对事件模块进行疯狂升级的成果. define("event", top.dispatchEvent ? ["$node"] : ["$node&q ...
- 使用pagination分页插件实现Ajax动态分页
pagination插件下载地址:https://pan.baidu.com/s/1c3QQ7XQ 一.前言 做的一个列表页要将所有结果显示出来,太多记录不能一次性显示,所以要进行分页.一开始尝试自己 ...
- pagination分页、jedate日期、wangEditor富文本插件使用总结
插件的使用 1. 导包 2. 写HTML结构 3. 初始化 pagination分页插件 官方文档:http://josecebe.github.io/twbs-pagination/ Demo: 1 ...
- 基础平台项目之集成Jquery.pagination.js实现分页
本博客介绍基于Spring Data这款orm框架加上 Jquery.pagination插件实现的分页功能. 本博客是基于一款正在开发中的github开源项目的,项目代码地址:https://git ...
- Winform开发框架之插件化应用框架实现
支持插件化应用的开发框架能给程序带来无穷的生命力,也是目前很多系统.程序追求的重要方向之一,插件化的模块,在遵循一定的接口标准的基础上,可以实现快速集成,也就是所谓的热插拔操作,可以无限对已经开发好系 ...
最新文章
- Alpine Linux 使用简介
- boot idea无法识别spring_idea搭建springboot项目
- ELKstack-Elasticsearch各类安装部署方法
- java 观察者模式示例_观察者设计模式示例
- RequireJS使用注意地方
- win7环境下创建超级隐藏账户
- 安笙机器人_张翰新戏搭档徐璐!包贝尔要和辛芷蕾演奇幻电影?
- paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
- VM296:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (anonymous)
- 如何在html中在线预览pdf文件
- windowsXP sp2 to sp3 的升级包
- 自动控制原理->控制系统性能
- 国内知名流程管理软件-汇总介绍
- 使用jedis连接redis,关闭连接问题
- 一个后端朋友面试一个月的经验总结
- 软件缺陷智能分析技术(1) - 技术地图
- 求解非齐次线性方程组算法
- 黑客(Hacker)的历史
- 【jq】自适应PC端幻灯片样式
- 【GPS】d文件转换为o文件