easyui源码翻译1.32--Pagination(分页)
前言
使用$.fn.pagination.defaults重写默认值对象下载该插件翻译源码
该分页控件允许用户导航页面的数据。它支持页面导航和页面长度选择的选项设置。用户可以在分页控件上添加自定义按钮,以增强其功能。
源码
/**
* jQuery EasyUI 1.3.2
*
*翻译:qq 1364386878
*/
(function ($) {
//创建工具条
function buildToolbar(target) {
var pagination = $.data(target, "pagination");
var opts = pagination.options;
var bb = pagination.bb = {};
var tb = $(target).addClass("pagination").html("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr></tr></table>");
var tr = tb.find("tr"); function getpaginationbar(name) {
var pagination = opts.nav[name];//获取按钮组 var a = $("<a href=\"javascript:void(0)\"></a>").appendTo(tr);
a.wrap("<td></td>");
a.linkbutton({
iconCls: pagination.iconCls,
plain: true
}).unbind(".pagination").bind("click.pagination", function () {
pagination.handler.call(target);
});
return a;
};
if (opts.showPageList) {
var ps = $("<select class=\"pagination-page-list\"></select>");
ps.bind("change", function () {
opts.pageSize = parseInt($(this).val());
opts.onChangePageSize.call(target, opts.pageSize);
_select(target, opts.pageNumber);
});
for (var i = 0; i < opts.pageList.length; i++) {
$("<option></option>").text(opts.pageList[i]).appendTo(ps);
}
$("<td></td>").append(ps).appendTo(tr);
$("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
}
bb.first = getpaginationbar("first");
bb.prev = getpaginationbar("prev");
$("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
$("<span style=\"padding-left:6px;\"></span>").html(opts.beforePageText).appendTo(tr).wrap("<td></td>");
bb.num = $("<input class=\"pagination-num\" type=\"text\" value=\"1\" size=\"2\">").appendTo(tr).wrap("<td></td>");
bb.num.unbind(".pagination").bind("keydown.pagination",
function (e) {
if (e.keyCode == 13) {
var page = parseInt($(this).val()) || 1;
_select(target, page);//选择一个新页面 page索引
return false;
}
});
bb.after = $("<span style=\"padding-right:6px;\"></span>").appendTo(tr).wrap("<td></td>");
$("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
bb.next = getpaginationbar("next");
bb.last = getpaginationbar("last");
if (opts.showRefresh) {
$("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
bb.refresh = getpaginationbar("refresh");
}
if (opts.buttons) {
$("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
for (var i = 0; i < opts.buttons.length; i++) {
var btnopts = opts.buttons[i]; if (btnopts == "-") {
$("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
} else {
var td = $("<td></td>").appendTo(tr);
$("<a href=\"javascript:void(0)\"></a>").appendTo(td).linkbutton($.extend(btnopts, { plain: true })).bind("click", eval(btnopts.handler || function () {
}));
}
}
}
$("<div class=\"pagination-info\"></div>").appendTo(tb);
$("<div style=\"clear:both;\"></div>").appendTo(tb);
};
//选择一个新页面
function _select(target, page) {
var opts = $.data(target, "pagination").options;
var pageCount = Math.ceil(opts.total / opts.pageSize) || 1;
opts.pageNumber = page;
if (opts.pageNumber < 1) {
opts.pageNumber = 1;
}
if (opts.pageNumber > pageCount) {
opts.pageNumber = pageCount;
}
_refresh(target, { pageNumber: opts.pageNumber });
opts.onSelectPage.call(target, opts.pageNumber, opts.pageSize);
};
//刷新并显示分页栏信息
function _refresh(target, options) {
var opts = $.data(target, "pagination").options;
var bb = $.data(target, "pagination").bb; $.extend(opts, options || {});
var ps = $(target).find("select.pagination-page-list");
if (ps.length) {
ps.val(opts.pageSize + "");
opts.pageSize = parseInt(ps.val());
}
var pageCount = Math.ceil(opts.total / opts.pageSize) || 1;
bb.num.val(opts.pageNumber);
bb.after.html(opts.afterPageText.replace(/{pages}/, pageCount));
var pinfo = opts.displayMsg;
pinfo = pinfo.replace(/{from}/, opts.total == 0 ? 0 : opts.pageSize * (opts.pageNumber - 1) + 1);
pinfo = pinfo.replace(/{to}/, Math.min(opts.pageSize * (opts.pageNumber), opts.total));
pinfo = pinfo.replace(/{total}/, opts.total);
$(target).find("div.pagination-info").html(pinfo);
bb.first.add(bb.prev).linkbutton({ disabled: (opts.pageNumber == 1) });
bb.next.add(bb.last).linkbutton({ disabled: (opts.pageNumber == pageCount) });
_loading(target, opts.loading);
};
//提醒分页控件正在加载中
function _loading(target, Msg) {
var opts = $.data(target, "pagination").options;
var bb = $.data(target, "pagination").bb;
opts.loading = Msg;
if (opts.showRefresh) {
if (opts.loading) {
bb.refresh.linkbutton({ iconCls: "pagination-loading" });
} else {
bb.refresh.linkbutton({ iconCls: "pagination-load" });
}
}
};
//实例化
$.fn.pagination = function (options, param) {
if (typeof options == "string") {
return $.fn.pagination.methods[options](this, param);
}
options = options || {};
return this.each(function () {
var opts;
var state = $.data(this, "pagination");
if (state) {
opts = $.extend(state.options, options);
} else {
opts = $.extend({}, $.fn.pagination.defaults, $.fn.pagination.parseOptions(this), options);
$.data(this, "pagination", { options: opts });
}
buildToolbar(this);
_refresh(this);
});
};
//默认方法
$.fn.pagination.methods = {
//返回参数对象
options: function (jq) {
return $.data(jq[0], "pagination").options;
},
//提醒分页控件正在加载中
loading: function (jq) {
return jq.each(function () {
_loading(this, true);
});
},
//提醒分页控件加载完成
loaded: function (jq) {
return jq.each(function () {
_loading(this, false);
});
},
//刷新并显示分页栏信息
refresh: function (jq, options) {
return jq.each(function () {
_refresh(this, options);
});
},
//选择一个新页面,页面索引从1开始
select: function (jq, page) {
return jq.each(function () {
_select(this, page);
});
}
};
//解析器配置
$.fn.pagination.parseOptions = function (target) {
var t = $(target);
return $.extend({}, $.parser.parseOptions(target, [{ total: "number", pageSize: "number", pageNumber: "number" },
{ loading: "boolean", showPageList: "boolean", showRefresh: "boolean" }]),
{ pageList: (t.attr("pageList") ? eval(t.attr("pageList")) : undefined) });
};
//默认属性 事件
$.fn.pagination.defaults = {
total: 1,//总记录数,在分页控件创建时初始的值
pageSize: 10,//页面大小
pageNumber: 1,//在分页控件创建的时候显示的页数
pageList: [10, 20, 30, 50],//用户可以改变页面大小。pageList属性定义了页面导航展示的页码
loading: false,//定义数据是否正在载入
//自定义按钮,每个按钮都有2个属性:
//iconCls:显示背景图片的CSS类ID handler:当按钮被点击时调用的一个句柄函数
buttons: null,
showPageList: true,//定义是否显示页面导航列表
showRefresh: true,//定义是否显示刷新按钮
//用户选择一个新页面的时候触发。回调函数包含2个参数:
//pageNumber:新的页数。 pageSize: 页面大小(每页显示的条数)。
onSelectPage: function (pageNumber, pageSize) {
},
//在点击刷新按钮刷新之前触发,返回false可以取消刷新动作
onBeforeRefresh: function (pageNumber, pageSize) {
},
//刷新之后触发
onRefresh: function (pageNumber, pageSize) {
},
//在页面更改页面大小的时候触发
onChangePageSize: function (pageSize) {
},
//定义是否显示刷新按钮
beforePageText: "Page",
//定义是否显示刷新按钮
afterPageText: "of {pages}",
//显示页面信息
displayMsg: "Displaying {from} to {to} of {total} items", nav: {
first: {
iconCls: "pagination-first", handler: function () {
var opts = $(this).pagination("options");
if (opts.pageNumber > 1) {
$(this).pagination("select", 1);
}
}
}, prev: {
iconCls: "pagination-prev", handler: function () {
var opts = $(this).pagination("options");
if (opts.pageNumber > 1) {
$(this).pagination("select", opts.pageNumber - 1);
}
}
}, next: {
iconCls: "pagination-next", handler: function () {
var opts = $(this).pagination("options");
var pageCount = Math.ceil(opts.total / opts.pageSize);
if (opts.pageNumber < pageCount) {
$(this).pagination("select", opts.pageNumber + 1);
}
}
}, last: {
iconCls: "pagination-last", handler: function () {
var opts = $(this).pagination("options");
var pageCount = Math.ceil(opts.total / opts.pageSize);
if (opts.pageNumber < pageCount) {
$(this).pagination("select", pageCount);
}
}
}, refresh: {
iconCls: "pagination-refresh", handler: function () {
var opts = $(this).pagination("options");
if (opts.onBeforeRefresh.call(this, opts.pageNumber, opts.pageSize) != false) {
$(this).pagination("select", opts.pageNumber);
opts.onRefresh.call(this, opts.pageNumber, opts.pageSize);
}
}
}
}
};
})(jQuery);
示例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Pagination - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
<script src="../../plugins2/jquery.parser.js"></script>
<script src="../../plugins2/jquery.linkbutton.js"></script>
<script src="../../plugins2/jquery.pagination.js"></script>
</head>
<body>
<h2>Basic Pagination</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>The user can change page number and page size on page bar.</div>
</div>
<div style="margin:10px 0;"></div>
<div class="easyui-pagination" data-options="total:114" style="border:1px solid #ddd;"></div>
</body>
</html>
插件效果
easyui源码翻译1.32--Pagination(分页)的更多相关文章
- easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)
前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...
- easyui源码翻译1.32--datagrid(数据表格)
前言 此前网上有easyui1.25的源码 应该算是比较老的版本 之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34 1.33开始支持css3 算是又一个转折 但是 ...
- easyui源码翻译1.32--EasyLoader(简单加载)
前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...
- easyui源码翻译1.32--panel(面板)
前言 昨天发布了表格datagrid的翻译源码 ,easyui的许多插件有依赖关系 比如datagrid 的渲染需要panel.resizable.linkbutton.pagination 今 ...
- easyui源码翻译1.32--ComboGrid(数据表格下拉框)
前言 扩展自$.fn.combo.defaults和$.fn.datagrid.defaults.使用$.fn.combogrid.defaults重写默认值对象.下载该插件翻译源码 数据表格下拉框结 ...
- easyui源码翻译1.32--PropertyGrid(属性表格)
前言 继承自$.fn.datagrid.defaults.使用$.fn.propertygrid.defaults重写默认值对象.下载该插件翻译源码 属性表格提供The propertygrid pr ...
- easyui源码翻译1.32--TreeGrid(树形表格)
前言 扩展自$.fn.datagrid.defaults.使用$.fn.treegrid.defaults重写默认值对象.下载该插件翻译源码 树形表格用于显示分层数据表格.它是基于数据表格.组合树控件 ...
- easyui源码翻译1.32--Draggable(拖动)
前言 使用$.fn.draggable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 --拖动 ...
- easyui源码翻译1.32--Droppable(放置)
前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...
随机推荐
- SQL*PLUS中批量执行SQL语句
SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ...
- ASP连接11种数据库的常用语法
1.Access数据库的DSN-less连接方法: 以下为引用的内容: set adocon=Server.Createobject("adodb.connection") ado ...
- Mysql 冷备份批处理
@Rem Generate today date @echo wscript.echo dateadd("d",0,date)>GetOldDate.vbs @for /f ...
- IOS 应用程序启动加载过程(从点击图标到界面显示)
今天帮同事解决问题的时候发现,程序BUG是由加载过程引起的.所以当局部代码没有问题,但是程序一运行却总不是我们想要结果的时候,我们应该想想是不是因为我们忽略了试图加载过程的原因.下面我们用一个例子来简 ...
- 2) LINQ编程技术内幕--yield return
yield return 使用.NET的状态机生成器 yield return关键词组自动实现IDisposable,使用这个可枚举的地方, 还存在一个隐含的try finally块. 示例代码: c ...
- UVA - 572 Oil Deposits(dfs)
题意:求连通块个数. 分析:dfs. #include<cstdio> #include<cstring> #include<cstdlib> #include&l ...
- Java异常(1)
一.要达到的效果 如果出现错误而是某些操作没有完成,程序应该: (1)返回到一种安全状态,并能够让用户执行一些其他的命令. (2)允许用户保存所有操作的结果,并以适当的方式终止程序. 异常处理的任 ...
- java.util.Hashtable源码分析
Hashtable实现一个键值映射的表.任何非null的object可以用作key和value. 为了能存取对象,放在表里的对象必须实现hashCode和equals方法. 一个Hashtable有两 ...
- PHP5.3后在本机运行很慢的解决方法
方法一:这是因为PHP 5.3在面对数据库配置信息中的“localhost”会犹豫,因此直接把这个地址改名为“127.0.0.1”,这个IP是IPv4下面的本地网络地址,实际作用和“localhost ...
- AVPlayer 视频播放
1. AVPlayer AVPlayer 是一个用来播放基于时间的视听媒体的控制器对象(一个队播放和资源时间相隔信息进行管理的对象,而非一个视图或窗口控制器). AVPlayer支持播放从本地, 分步 ...