原生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 ...
随机推荐
- php 对接微信接口 {"errcode":41001,"errmsg":"access_token missing hint
这里是针对所有token微信都有这种机制 1.token被多次访问无效 访问微信接口->得到token,缓存起来2小时内有效,期间2小时内每次都取缓存即可,不必每次都去微信那边兑换 问题:缓存期 ...
- Linux下安装java及配置(yum安装)
1.查看java的所有版本:yum list java* 2.安装免费版1.8: yum install java-1.8.0-openjdk.x86_64 3.配置java环境 JAVA_HOME= ...
- java http get/post请求
一.http get/post请求 /** * @Description httpPost请求 */ public static String httpPost(String url, String ...
- JDK性能监控命令
阅读原文 查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps ...
- 荔枝派zero从焊接到跑起linux
步骤 焊flash芯片(如果大于16M,需要改烧录工具的源码) 焊引脚,为了串口看数据 焊接flash芯片,需要注意1号脚的位置,flash芯片在开发板背面,1号脚位置是靠近麦克风的那边 以下为编译相 ...
- 解决mysql的in条件中参数是带引号的字符串的时候查询失效
原文链接:https://blog.csdn.net/u014520745/article/details/54091256
- mysql的全量备份与增量备份
mysql的全量备份与增量备份 全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表. 备份所有数据库:[root@my ~]# mysqldump -uroo ...
- 阿里云环境安装K8S步骤
1. 安装docker yum install -y docker 2. 修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值 $ vim /et ...
- "What's your problem?"记住!聊天千万不能用这句话!
"What's your problem?"记住!聊天千万不能用这句话! 2018-01-05 19:21 这个世界套路太多 学英语也不例外 一不留神就陷入套路里 有一种痛叫做“ ...
- [转]解决 gem install 安装失败
链接地址:https://blog.csdn.net/weixin_42414461/article/details/85337465