原生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 ...
随机推荐
- 虚拟环境上的jupyterhub开机启动设置
为了让jupyterhub 开机启动,或者以服务的方式启动,折腾了好久.环境 ubuntu 16.04anaconda >= 4.5python35 jupyterhub 0.9.4node 6 ...
- 【FPGA】always (*) 后代码全部显示注释字体的颜色之解决方法
2015年08月26日 09:44:05 风雨也无晴 阅读数:1289 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/scottly1/art ...
- regexp_replace
pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&sha ...
- cordova 的安桌动画
1.cordova 的安桌动画cordova plugin add cordova-plugin-lottie-splashscreenhttps://github.com/timbru31/cord ...
- Win7下Powershell 由2.0 升级为 5.1
今天在构建脚本的时候老是提示 Windows 7 默认的Powershell是2.0,查看版本 下载 https://www.microsoft.com/en-us/download/details. ...
- .net桌面程序或者控制台程序使用NLog时的注意事项
Nuget添加NLog 添加nlog.config文件,并选择属性->始终复制 不选择始终复制,编译后nlog.config是没有的. 具体使用: private static readonly ...
- 实现CI/CDk8s高可用集群搭建总结以及部署API到k8s
实现CI/CD(Centos7.2)系列二:k8s高可用集群搭建总结以及部署API到k8s 前言:本系列博客又更新了,是博主研究很长时间,亲自动手实践过后的心得,k8s集群是购买了5台阿里云服务器部署 ...
- Oracle Spatial分区应用研究之四:不同分区粒度+全局空间索引效率对比
1.实验目的 在实验之前先回答这样一个问题——对同一份数据使用不同的分区粒度,但均创建全局空间索引,问:它们的全局空间索引一致吗? 怎样算是一致的呢?R-TREE的树结构一致算一致吗?空间索引条目数及 ...
- [转帖]Masscan教程和入门手册
Masscan教程和入门手册 https://www.4hou.com/tools/8251.html 愣娃 安全工具 2017年11月1日发布 收藏 导语:masscan是为了尽可能快地扫描整个互联 ...
- day18——re正则表达式
day18 re模块--正则表达式 匹配方法 findall():从字符串中全部查找内容,返回一个列表 s = "meet_宝元_meet" print(re.findall(&q ...