实现一个类似于百度搜索结果的分页样式,样式可以自定义,接近于原生,少部分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 定义分页控件,类似于百度搜索的更多相关文章

  1. 日积月累系列之分页控件(js源码)

    最近开发了一款分页控件,分享给大家. 主要功能和界面介绍 cform分页控件支持服务端分页.客户端分页.数据过滤.数据排序等功能. 源码介绍 cform-pager分页控件主要由三部分组成:css.s ...

  2. 仿淘宝分页按钮效果简单美观易使用的JS分页控件

    分页按钮思想:  1.少于9页,全部显示  2.大于9页,1.2页显示,中间页码当前页为中心,前后各留两个页码  附件中有完整例子的压缩包下载.已更新到最新版本  先看效果图:  01输入框焦点效果  ...

  3. 纯手写分页控件CSS+JS+SQL

    Asp.net中虽然用DataPager配合ListView可以实现分页显示,但是有时候由于开发环境等问题不能用到DataPager控件,那么自己手工写一个分页控件就很有必要了,当然,最重要的是通用性 ...

  4. 在DevExpress程序中使用Winform分页控件直接录入数据并保存

    一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...

  5. 自定义angularjs分页控件

    继昨天写了knockoutjs+ jquery pagination+asp.net web Api 实现无刷新列表页 ,正好最近刚学习angularjs ,故琢磨着写一个angularjs版本的分页 ...

  6. jquery 分页控件(二)

    上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net ...

  7. 自己写的简单的jQuery分页控件

    因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...

  8. jquery 分页控件2

    jquery 分页控件(二) 上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的 ...

  9. laypage分页控件使用方法

    laypage是一款非常简单易用的分页控件,由于最近项目中使用到了,简单记录一下使用方法 1.引入laypage所需的js和css文件 <link href="js/laypage/1 ...

随机推荐

  1. gradle/gradle plugin/Android studio关系

    gradle - 构建工具,存储于Users/stono/.gradle/wrapper/dists Adroid Studio- IDE Gradle plugin - 在AS中使用Gradle的插 ...

  2. MIME类型和Java类型

    MIME类型和Java类型 类型转换Spring Cloud Stream提供的开箱即用如下表所示:“源有效载荷”是指转换前的有效载荷,“目标有效载荷”是指转换后的“有效载荷”.类型转换可以在“生产者 ...

  3. Mac OS X 10.14.3下如何给Python2.7.10安装MySQL-Python

    最近准备再看一下python ,弄个自动化部署的工具,一来就遇到了坑 sudo pip install MySQL-Python --global-option=build_ext --global- ...

  4. (转)LoadRunner之录制你的第一个脚本

    LoadRunner安装完成之后,肯定就迫不及待的想要上手试用了.下面就是讲一下LR脚本录制的流程和基本的设置. 1.先放一张脚本录制以及运行的流程图 2.脚本录制步骤 1)以管理员身份打开LR软件, ...

  5. Xamarin.Forms Shell基础教程(1)

    Xamarin.Forms Shell基础教程(1) 什么是Xamarin.Forms Shell Shell是Visual Studio为Xamarin Forms提供的解决方案模版.本质上,She ...

  6. 【小实现】css after+border实现标签半菱形

    <!DOCTYPE html> <html lang="en"> <head> <style> .span-line-begin { ...

  7. css---【vw,vh】进行自适应布局单位

    在进行CSS3自适应布局,会用到 vw 和 vh 进行布局 视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:L ...

  8. Android设置顶部banner背景透明度时影响全局背景问题

    项目中用到滑动界面使顶部title栏背景渐隐渐现的效果,即初始不滑动时的透明度为0,用了bannerle.getBackground().setAlpha(0); 但使用这个方法设置透明度是管用,返回 ...

  9. 使用java计算数组方差和标准差

    使用java计算数组方差和标准差 觉得有用的话,欢迎一起讨论相互学习~Follow Me 首先给出方差和标准差的计算公式 代码 public class Cal_sta { double Sum(do ...

  10. 媲美GWAS Catalog,囊括45万人数据,778个表型,3千万个位点的公共数据库:GeneATLAS

    欢迎关注微信公众号"bio生物信息" GeneATLAS的数据全部来自 UK Biobank 的452,264个英国白人样本. 总共囊括的表型有778个,位点有三千万个. 优点 网 ...