原生js 定义分页控件,类似于百度搜索
实现一个类似于百度搜索结果的分页样式,样式可以自定义,接近于原生,少部分Jquery 。
1、实现效果截图(默认无任何样式)

2、主要程序代码
define(function (require, exports, module) {
/*
说明:自定义分页组件
作者:胡泽云
日期:2019-01-06
*/
var index = {
data: {
pageSize: 10, //每页数量
total: 100, //总页数
curPage: 1, //当前页
maxPageNum: 10 //视野范围的数目
},
//程序初始化
init: function (option) {
var me = this;
me.option = option;
me.data.pageSize = option.pageSize;
me.data.total = option.total;
if (option.maxPageNum) {
me.data.maxPageNum = option.maxPageNum;
}
me.render(option.containerId); //containerId 通过init 进行传递
//me.bind();
},
//进行渲染
render: function (containerId) {
var html = ""
var me = this;
var pageNum = Math.round(me.data.total / me.data.pageSize);
//取中间值
var midle = me.data.maxPageNum / 2;
var beginPage = me.data.curPage - midle;
var endPage = me.data.curPage + midle - 1; //开始边界处理
if (beginPage <= 0) {
beginPage = 1;
} if (endPage < me.data.maxPageNum) {
endPage += me.data.maxPageNum - endPage;
}
//结束边界
if (endPage >= pageNum) {
endPage = pageNum;
} console.log(beginPage + " " + endPage);
for (var num = beginPage; num <= endPage; num++) { if (me.data.curPage == num) {
html += "<span name='pageSpan' >" + num + "</span> ";
}
else {
html += "<a name='page' href='javascript:;' >" + num + "</a> ";
}
}
//上一页 下一页
if (beginPage > 1 && endPage < pageNum) {
html = "<a id='prePage' href='javascript:;' >上一页</a> " + html +
"<a id='nextPage' href='javascript:;' >下一页</a>";
}
else {
if (beginPage == 1) {
html += " <a id='nextPage' href='javascript:;' >下一页</a>";
}
else if (endPage == pageNum) {
html = "<a id='prePage' href='javascript:;' >上一页</a> " + html;
}
}
html += "<div>总共:" + me.data.total + " 条," + pageNum + "页</div>";
if (containerId) {
$("#" + containerId).html(html);
} console.log(html);
//重新绑定事件
me.bind();
if (me.option.pageChange) {
//var beginRcordNum = me.data.curPage * this.option.pageSize;
//var endRcordNum = beginRcordNum + this.option.pageSize;
me.option.pageChange({
curPage: me.data.curPage,
//beginRcordNum: beginRcordNum,
//endRcordNum: endRcordNum,
pageSize: me.data.pageSize
});
} },
bind: function () {
var me = this;
//绑定click 点击事件
$("[name='page']").each(function (index, obj) {
$(obj).on("click", function () {
var page = $(obj).text();
me.data.curPage = parseInt(page);
if (me.option.containerId) {
me.render(me.option.containerId);
} });
});
//上下页
$("#prePage").on("click", function () {
me.data.curPage--;
if (me.option.containerId) {
me.render(me.option.containerId);
}
})
//下一页
$("#nextPage").on("click", function () {
me.data.curPage++;
if (me.option.containerId) {
me.render(me.option.containerId);
}
})
} };
exports = module.exports = index;
})
详细代码 https://github.com/huzeyun/jspage/
原生js 定义分页控件,类似于百度搜索的更多相关文章
- 日积月累系列之分页控件(js源码)
最近开发了一款分页控件,分享给大家. 主要功能和界面介绍 cform分页控件支持服务端分页.客户端分页.数据过滤.数据排序等功能. 源码介绍 cform-pager分页控件主要由三部分组成:css.s ...
- 仿淘宝分页按钮效果简单美观易使用的JS分页控件
分页按钮思想: 1.少于9页,全部显示 2.大于9页,1.2页显示,中间页码当前页为中心,前后各留两个页码 附件中有完整例子的压缩包下载.已更新到最新版本 先看效果图: 01输入框焦点效果 ...
- 纯手写分页控件CSS+JS+SQL
Asp.net中虽然用DataPager配合ListView可以实现分页显示,但是有时候由于开发环境等问题不能用到DataPager控件,那么自己手工写一个分页控件就很有必要了,当然,最重要的是通用性 ...
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...
- 自定义angularjs分页控件
继昨天写了knockoutjs+ jquery pagination+asp.net web Api 实现无刷新列表页 ,正好最近刚学习angularjs ,故琢磨着写一个angularjs版本的分页 ...
- jquery 分页控件(二)
上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net ...
- 自己写的简单的jQuery分页控件
因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...
- jquery 分页控件2
jquery 分页控件(二) 上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的 ...
- laypage分页控件使用方法
laypage是一款非常简单易用的分页控件,由于最近项目中使用到了,简单记录一下使用方法 1.引入laypage所需的js和css文件 <link href="js/laypage/1 ...
随机推荐
- 干掉搜狗输入法云代理SogouCloud.exe
搜狗输入法暂时还离不开,但是很讨厌搜狗输入法一直在后台的"搜狗云代理程序"(C:\Program Files (x86)\SogouInput\9.1.0.2657\SogouCl ...
- 003 okhttp超时与缓存
上文的介绍都没添加,如果要添加,则按照下面的方式设置. File sdcache = getExternalCacheDir(); int cacheSize = 10 * 1024 * 1024; ...
- Nginx接入gPRC
gPRC官网:https://grpc.io/ NGINX将在1.13.10版本中包含grpc相关功能 这个版本支持NGINX代理gRPC TCP连接.可以用来: 发布gRPC服务,包括未加密/加密的 ...
- Nginx 配置 HTTP
配置如下 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; ...
- LeetCode_476. Number Complement
476. Number Complement Easy Given a positive integer, output its complement number. The complement s ...
- .NET 文件上传和文件接收
有时候,我们需要在后台端发起向指定的“文件接收接口”的文件传输请求,可以采用HttpWebRequest方式实现文件传输请求. 1.HttpWebRequest文件传输请求的代码如下: 其中,url为 ...
- sqlite3 数据库表查看步骤
sqlite3 数据库表查看步骤 1 sqlite3 local.db2 .mode column3 .headers on4 .tables5 select * from tablename6 ;( ...
- Xshell连接SqlPlus无法使用退格、删除键
问题:在使用xshell连接CentOS7,进入SQLPLUS进行命令操作时,如果输错了信息,无法进行退格键删除(显示“^H”),同样按删除键,显示“^[[3~”. 解决:网上查找了相关资料,可以通过 ...
- STL源码之traits编程技法
摘要 主要讨论如何获取迭代器相应型别.使用迭代器时,很可能用到其型别,若需要声明某个迭代器所指对象的型别的变量,该如何解决.方法如下: function template的参数推导机制 例如: tem ...
- IDEA的java源码文件左边有一个红色的J
解决办法: 如果源码文件这里已经有一个路径,那就添加现在的.java文件所在目录,或者删除了再重新添加