jQuery之自定义pagination控件
slpagination
效果:

slpagination.js
(function($) {
$.fn.slpagination = function(options, params) {
if ($.type(options) == "string") {
var method = $.fn.slpagination.methods[options];
if (method) {
return method(this, params);
} else {
return null;
}
}
var settings = {};
$.extend(settings, $.fn.slpagination.defaults, options);
$(this).data("settings", settings);
$(this).attr({
"class" : settings.css,
style : settings.style
});
$(this).empty();
if (settings.total == 0) {
settings.total = settings.pageSize;
}
var pageCount = parseInt(settings.total / settings.pageSize);
pageCount = pageCount * settings.pageSize >= settings.total ? pageCount : (pageCount + 1);
$("<input>", {
type : "text",
style : "margin:0 0 0 3px;width:30px;float:left;",
value : settings.pageSize,
blur : function() {
var r = /^[0-9]*[1-9][0-9]*$/;
if (r.test($(this).val())) {
settings.pageIndex = 1;
$("input:eq(1)", $(this).parent()).val(1);
settings.pageSize = $(this).val();
settings.onChangePageSize($(this).val());
} else {
$(this).val(settings.pageSize);
}
}
}).appendTo(this);
$("<span>", {
style : "cursor:pointer;margin:0 0 0 10px;",
mouseenter : function() {
$(this).addClass("slpagination-button-enter");
},
mouseleave : function() {
$(this).removeClass("slpagination-button-enter");
},
click : function() {
settings.pageIndex = 1;
$("input:eq(1)", $(this).parent()).val(1);
settings.onSelectPage(1);
}
}).text("<<").appendTo(this);
$("<span>", {
style : "cursor:pointer;margin:0 0 0 10px;",
mouseenter : function() {
$(this).addClass("slpagination-button-enter");
},
mouseleave : function() {
$(this).removeClass("slpagination-button-enter");
},
click : function() {
settings.pageIndex--;
if (settings.pageIndex <= 0) {
settings.pageIndex = 1;
}
$("input:eq(1)", $(this).parent()).val(settings.pageIndex);
settings.onSelectPage(settings.pageIndex);
}
}).text("<").appendTo(this);
$("<span>", {
style : "margin:0 0 0 20px;"
}).text(settings.beforePageText).appendTo(this);
$("<input>", {
type : "text",
style : "margin:0 0 0 3px;width:30px;",
value : settings.pageIndex,
blur : function() {
var r = /^[0-9]*[1-9][0-9]*$/;
if (r.test($(this).val())) {
if ($(this).val() > pageCount) {
$(this).val(pageCount);
}
settings.pageIndex = $(this).val();
settings.onSelectPage($(this).val());
} else {
$(this).val(settings.pageIndex);
}
}
}).appendTo(this);
$("<span>", {
style : "margin:0 0 0 3px;"
}).text(settings.afterPageText.replace(/{pageCount}/, pageCount)).appendTo(this);
$("<span>", {
style : "cursor:pointer;margin:0 0 0 10px;",
mouseenter : function() {
$(this).addClass("slpagination-button-enter");
},
mouseleave : function() {
$(this).removeClass("slpagination-button-enter");
},
click : function() {
settings.pageIndex++;
if (settings.pageIndex > pageCount) {
settings.pageIndex = pageCount;
}
$("input:eq(1)", $(this).parent()).val(settings.pageIndex);
settings.onSelectPage(settings.pageIndex);
}
}).text(">").appendTo(this);
$("<span>", {
style : "cursor:pointer;margin:0 0 0 10px;",
mouseenter : function() {
$(this).addClass("slpagination-button-enter");
},
mouseleave : function() {
$(this).removeClass("slpagination-button-enter");
},
click : function() {
settings.pageIndex = pageCount;
$("input:eq(1)", $(this).parent()).val(settings.pageIndex);
settings.onSelectPage(settings.pageIndex);
}
}).text(">>").appendTo(this);
$("<span>", {
style : "margin:0 0 0 100px;clear:right;"
}).text(settings.displayMsg.replace(/{from}/, (settings.pageIndex - 1) * settings.pageSize + 1).replace(/{to}/, (settings.pageIndex * settings.pageSize > settings.total ? settings.total : settings.pageIndex * settings.pageSize)).replace(/{total}/, settings.total)).appendTo(this);
};
$.fn.slpagination.methods = {
getPageSize : function(slpagination) {
return $("input:eq(0)", slpagination).val();
},
getPageIndex : function(slpagination) {
return $("input:eq(1)", slpagination).val();
}
};
$.fn.slpagination.defaults = {
css : "slpagination",
style : "",
total : 0,
pageSize : 10,
pageIndex : 1,
beforePageText : "page",
afterPageText : "of {pageCount}",
displayMsg : "display {from} to {to} of {total} items",
onChangePageSize : function(pageSize) {
},
onSelectPage : function(pageIndex) {
}
};
})(jQuery);
slpagination.css
div,input,span {
margin:; padding:;font-family:verdana;font-size:12px;
}
.slpagination {
width: auto; background-color: #EFEFEF; padding: 4px 0 3px 0;
}
.slpagination-button-enter {
font-weight: bold;
}
testslpagination.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="/css/streamlineui/slpagination.css" />
<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/js/streamlineui/slpagination.js"></script>
</head>
<body>
<div id="sl"></div>
<script type="text/javascript">
$(function() {
$("#sl").slpagination({
onChangePageSize : function(pageSize) {
alert(pageSize);
},
onSelectPage:function(pageIndex){
alert(pageIndex);
}
});
});
</script>
</body>
</html>
API文档
| 属性名 | 属性值类型 | 描述 | 默认值 |
| css | string | 使用的class样式 | slpagination |
| style | string | 应用的样式 | 空字符串 |
| total | int | 总记录数 | 0 |
| pageSize | int | 一页显示记录数 | 10 |
| pageIndex | int | 当前显示的页码 | 1 |
| beforePageText | string | 页码前面的文字 | page |
| afterPageText | string | 页码后面的文字 | of {pageCount} |
| displayMsg | string | 显示文字 | display {from} to {to} of {total} items |
| 事件名 | 参数 | 描述 |
| onSelectPage | pageIndex | 选择一个新页面的时候触发 |
| onChangePageSize | pageSize | 在页面更改页面大小的时候触发 |
| 方法名 | 参数 | 描述 |
| getPageSize | 无 | 获取每页显示的记录数 $("#pg").slpagination("getPageSize") |
| getPageIndex | 无 | 获取当前显示的页码
$("#pg").slpagination("getPageIndex")
|
jQuery之自定义pagination控件的更多相关文章
- jQuery之自定义datagrid控件
sldatagrid 效果: sldatagrid.js (function($) { function loadColumns(sldatagrid, columns) { $(sldatagrid ...
- javascript实例学习之六—自定义日历控件
基于之前上篇博客轻量级jquery,tool.js和base.js.自定义开发的base_datePicker插件,效果类似于jquery_ui的datePicker插件 //基于Base.js以及t ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
- asp.net webform 自定义分页控件
做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...
- arcgis api for js共享干货系列之二自定义Navigation控件样式风格
arcgis api for js默认的Navigation控件样式风格如下图: 这样的风格不能说不好,各有各的爱好,审美观,这里也不是重点,这里的重点是如何自定义一套自己喜欢的样式风格呢:自己自定义 ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- C# 自定义FileUpload控件
摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和T ...
- C#Winform VScrollBar+Pannel自定义列表控件(原)
该控件的主要实现思路是用的objective-c中的自定义控件思路,主视图中放子视图 效果图 (窗体调用代码) public partial class Form1 : RibbonForm { Li ...
随机推荐
- nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)
俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经 ...
- Python ---chart
# -*- coding:utf-8 -*- import random import matplotlib.pyplot as plt from pylab import * import os i ...
- 12C的审计模式
1.Mixed Auditing Policy 混合审计模式支持新的审计引擎和老的审计引擎一起工作数据库升级后,已有的审计设置不会受到影响.但是官方建议迁移到统一审计模式.数据库创建后,默认是使用混合 ...
- ef 通用类
using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.I ...
- android:fitsSystemWindows属性的用法
属性说明 fitsSystemWindows属性可以让view根据系统窗口来调整自己的布局:简单点说就是我们在设置应用布局时是否考虑系统窗口布局,这里系统窗口包括系统状态栏.导航栏.输入法等,包括一些 ...
- linux文件系统 - 初始化(二)
加载initrd(上) 一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可 ...
- docker 和 vagrant 作为程序发布 和 开发的独立而统一的运行环境
docker 和 vagrant 作为程序发布 和 开发的运行环境,可以提供打包程序,并使得程序运行在一个独立的虚拟环境中,避免程序发布到客户机之后,环境不一致导致的诸多问题. refer: ...
- Python——验证码识别 Pillow + tesseract-ocr
至于安装教程在这里不再重复说了,可以参考博客,网上有大把的教程 https://blog.csdn.net/testcs_dn/article/details/78697730 要是别的验证码是如下类 ...
- 前端表单中有按钮button自动提交表单
问题描述 在设计表单时,表单内有一个按钮<button>,该按钮是用来获取其他数据或执行其他操作的.并不是让他提交表单. 解决方案 1) 设置 form 的 onsubmit='retur ...
- tuple与list
tuple是一个引用之后就不可以修改的类型,是一个immutable类型 list是一个mutable的类型,引用之后是可以修改的.同时可以通过索引来修改list中各个元素.这一点是tuple做不到的 ...