写了个pager, 可供参考
/*
Author: Calos
Description: patv2 pager
!import: this pager goes with the time, we just temporarily stay, what a sad fact!
*/
(function ($) {
$.fn.patpager = function (options) {
options = options || {
turnPageTriggered: function (indexer) {
indexer = indexer || { pageIndex: 1, pageSize: 10 };
}, pageIndex: 1, pageSize: 10, pageCount: 10
};
var pagerStatus = { pageIndex: options.pageIndex || 1, pageSize: options.pageSize || 10 };
var $this = $(this);
$this.children().remove();
var timestamp = new Date().getTime();
var caching = {};
var fetchIndexer = function (indexerTo, transform) {
if (options.turnPageTriggered) {
transform();
options.turnPageTriggered(indexerTo);
}
}
var components = {
Turntopage: '<label>Turn to page</label>',
pageIndex: function (num) { return '<input type="text" class="pageTo" value=' + num + '>'; },
previousPage: '<a class="prev"><<</a>',
curStatus: function (pageIndex, totalPages) { return 'page <span class="cur">' + pageIndex + '</span> of <span class="totalPages">' + totalPages + '</span>'; },
nextPage: '<a class="next">>></a>'
};
var methods = {
createPager: function (pageIndex, totalPage) {
var html = '<div class=' + timestamp + ' >' + components.Turntopage + components.pageIndex(pageIndex) + components.previousPage + components.curStatus(pageIndex, totalPage) + components.nextPage + '</div>';
$this.html(html);
},
refreshCache: function () {
caching = {
pageTo: $this.find('.pageTo'),
prev: $this.find('.prev'),
pageIndex: $this.find('.cur'),
totalPages: $this.find('.totalPages'),
next: $this.find('.next')
}
$(".prev,.next").css('cursor', 'pointer');
},
initPager: function (option) {
methods.createPager(option.pageIndex, option.pageSize);
this.refreshCache();
},
pageIndexChanged: function (pager, sendInitTableRequest) {
pager = pager || { pageTo: 1, pageSize: 10 };
var totalPage = sendInitTableRequest(pager);
caching.pageIndex.text(pager.pageTo);
},
setCurrentPage: function (pageTo) { caching.pageIndex.text(pageTo >= 1 ? pageTo : 1) },
getCurrentPage: function () { return parseInt(caching.pageIndex.text()); },
ensureFirstPage: function () {
return this.getCurrentPage() === 1;
},
ensureLastPage: function () {
return this.getCurrentPage() === options.pageCount;
},
turnToPreviousPage: function () {
pagerStatus.pageIndex = methods.getCurrentPage() - 1;
fetchIndexer(pagerStatus, function () {
methods.setCurrentPage(pagerStatus.pageIndex);
});
},
turnToNextpage: function () {
pagerStatus.pageIndex = methods.getCurrentPage() + 1;
fetchIndexer(pagerStatus, function () {
methods.setCurrentPage(pagerStatus.pageIndex);
});
},
turnTopage: function (index) {
pagerStatus.pageIndex = index;
fetchIndexer(pagerStatus, function () {
methods.setCurrentPage(pagerStatus.pageIndex);
});
},
ensureValidPageIndex: function () {
var i = caching.pageTo.val();
var c = parseInt(caching.totalPages.text());
if (i <= 0) { caching.pageTo.val(1); caching.pageIndex.text(1); return true; }
if (i >= c) { caching.pageTo.val(c); caching.pageIndex.text(c); return true; }
return /\d/gim.test(i) && i > 0 && i < parseInt(caching.totalPages.text());
}
};
var behaviors = {
prevClick: function () {
methods.turnToPreviousPage();
},
nextClick: function () {
methods.turnToNextpage();
},
curChange: function () {
}
}; var getFrame = function (selector) {
return '.' + timestamp + ' ' + selector;
} $this.on('click', getFrame('.prev'), function (e) {
if (!methods.ensureFirstPage())
behaviors.prevClick();
});
$this.on('click', getFrame('.next'), function (e) {
if (!methods.ensureLastPage())
behaviors.nextClick();
});
$this.on('keydown blur', '.pageTo', function (e) {
var eType = $.inArray(e.type, ['focusout', 'keydown']);
if ((eType === 1 && e.keyCode === 13) || eType === 0) {
if (methods.ensureValidPageIndex()) {
var index = caching.pageTo.val();
methods.turnTopage(index);
}
}
}); methods.initPager(options);
return this;
}
})(jQuery);
效果:
写了个pager, 可供参考的更多相关文章
- Unity上一页下一页切换功能实现源码(仅供参考)
在做项目时我们有时需要实现切换上一页下一页图片,切换上一首下一首歌曲等等类似的功能.这里写了个简单的实现源码(仅供参考),要是有更好的方法欢迎提出来,共同进步~ 以切换上一页下一页图片为例: usin ...
- mysql 千万级数据查询效率实践,分析 mysql查询优化实践--本文只做了一部分,仅供参考
数据量, 1300万的表加上112万的表 注意: 本文只做了部分优化,并不全面,仅供参考, 欢迎指点. 请移步tim查看,因为写的时候在tim写的,粘贴过来截图有问题,就直接上链接了. https ...
- 【WPF】SnapsToDevicePixels与UseLayoutRounding二者到底有什么区别?供参考
原文:[WPF]SnapsToDevicePixels与UseLayoutRounding二者到底有什么区别?供参考 MSDN上解释了一大堆,二者对比来看,并不能发现什么明显的区别,微软爸爸也不知道多 ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- EF封装类 增加版,增加从缓存中查找数据方法,供参考!
EF封装类 增加版,增加从缓存中查找数据方法,供参考! 这个类是抽象类,我这里增加了需要子类验证的方法ValidateEntity,方便扩展,若想直接使用该类,可以将该类更改成静态类,里面所有的方法都 ...
- EF封装类,供参考!
以下是我对EF DB FIRST 生成的ObjectContext类进行封装,代码如下,供参考学习: using System; using System.Collections.Generic; u ...
- 为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
http://blog.csdn.net/caryaliu/article/details/49284185 需要在被观察的属性所在的类里面实现一些方法,对开发者不友好,一般不建议使用,这里mark一 ...
- configure错误列表供参考
另外附一些常见的configure错误列表供参考: configure: error: No curses/termcap library found网上有的说法是:--with-named-curs ...
- Ubuntu 12.04 分区方案(仅供参考)
Ubuntu 12.04 分区方案(仅供参考) 总空间大小:50G 目录 建议大小 实际大小 格式 描述 / 10G~20G 10G ext4 根目录 swap <2048M 1G swap ...
随机推荐
- Andrew Ng机器学习公开课笔记–Reinforcement Learning and Control
网易公开课,第16课 notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么 但某些sequential decision making问题,比 ...
- oracle 嵌套表
--自定义对象 CREATE OR REPLACE TYPE Fas_checksheetinfo_line_obj AS OBJECT( CSID_ID VARCHAR2(32 ...
- correctly handle PNG transparency in Win IE 5.5 & 6.
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6. { var arVersion = ...
- (IOS)Swift Music 程序分析
本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源App Swift Music的研究心得. 项目地址:https://github.com/xujiyao123/SwiftMu ...
- 回退(pop&present)到根页面(根控制器)的方法,很不错~
http://blog.csdn.net/assholeu/article/details/45897035
- 通过runtime替换系统类实现的代码(从github开源库fdstackview中摘录)
其中部分代码为汇编:由此可见oc的runtime的灵活性和能力.此代码仅供参考 // ---------------------------------------------------- // R ...
- importSTV的使用
一:由HDFS将数据直接导入到HBase中 1.生成TSV文件 2.内容 3.上传到HDFS 4.运行 export HBASE_HOME=/etc/opt/modules/hbase-0.98.6- ...
- 用户控件UserControl图片资源定位(一)---Xaml引用图片
MEF编程实现巧妙灵活松耦合组件化编程,一些细节需要花费不小心思去处理: 其中组件中若包含用户控件,且需要访问图片资源,那么Xaml引用资源需要做以下设置 1. 用户控件(usercontrol)所在 ...
- IAdaptable和IAdaptableFactory(转)
先记在这里,回头研究下. 原文:http://blog.csdn.net/mini_snow/article/details/3877379 1. 简介和简单的实现 IAdapteable实际上在Ec ...
- 通过自定义属性存储数据实现输入框获得焦点与失去焦点改变value值
http://gopro.ee.cagoe.com/index.html html: <div class="name"><input value=&qu ...