根据Bootstrap Paginator改写的js分页插件
发布时间 - 2026-01-10 22:05:04 点击率:次刚刚出来实习,之前实习的公司有一个分页插件,和后端的数据字典约定好了的,基本上是看不到内部是怎么实现的,新公司是做WPF的,好像对于ASP.NET的东西不多,导师扔了一个小系统给我和另一个同事,指了两种框架的方案就让我们自己做了。。。

刚开始在网上找了一下,觉得bootstrap-paginator的api暴露出来,修改一下就可以做成之前实习公司的那种了,但是觉得没有跳转,很奇怪,想要一个,就动手在github上把源码拿下来了,不得不说,这代码写得真是比我这些实习码农好太多。(之前实习公司的组长临走之前给了我几个意见,其中就有让我多上全球最大的男性/交友社区github多去看看 - - )这里给一下地址吧。bootstrap-paginator下载地址
看了一些网上对于bootstrap-paginator插件的使用教程,对于使用起来还是没太大问题的,自己在改代码的时候发现都不太全。
首先,插件有调节大小、调节浮动位置的功能,但是我用的是bootstrap3,在bootstrap3中这些特性都不支持。。
后来,我就找了一下别的样式(前端无能,十分佩服前端大牛,硬是能把页面组织起来),效果大概就是:
给一下这个html代码吧。
<div id="pager" class="ui-paging-container"> <ul> <li class="ui-pager ui-pager-disabled" data-original-title="" title=""> <a><<</a> </li> <li class="ui-pager ui-pager-disabled" data-original-title="" title=""> <a><</a> </li> <li class="ui-pager focus" data-original-title="" title=""> <a>1</a> </li> <li class="ui-pager" data-original-title="" title=""> <a>2</a> </li> <li class="ui-pager" data-original-title="" title=""> <a>3</a> </li> <li class="ui-pager" data-original-title="" title=""> <a>4</a> </li> <li class="ui-pager" data-original-title="" title=""> <a>5</a> </li> <li class="ui-paging-ellipse" data-original-title="" title="">...</li> <li class="ui-pager" data-original-title="" title=""> <a>10</a> </li> <li class="ui-pager" data-original-title="" title=""> <a>></a> </li> <li class="ui-pager" data-original-title="" title=""> <a>>></a> </li> <li class="ui-paging-toolbar" data-original-title="" title=""> <input class="ui-paging-count" type="text" id="txt_turn"> <a href="javascript:void(0)" id="btn_turn">跳转</a> </li> </ul> </div>
样式代码很简单,如果有人想用的话,可以修改一下我的样式代码。。真的好像不怎么好看。
.ui-paging-container {color: #666; font-size: 15px;}
.ui-paging-container ul {overflow: hidden; text-align: center;}
.ui-paging-container ul, .ui-paging-container li {list-style: none;}
.ui-paging-container li {display: inline-block;padding: 3px 6px;margin-left: 5px;color: #666;}
.ui-paging-container li a {color: #666; text-decoration: none; }
.ui-paging-container li.ui-pager {cursor: pointer;border: 1px solid #ddd;border-radius: 2px;}
.ui-paging-container li.ui-pager:hover, .ui-paging-container li.focus { background-color: #288df0;color: #FFFFFF;}
.ui-paging-container li.ui-paging-ellipse {border: none;}
.ui-paging-container li.ui-paging-toolbar {padding: 0;}
.ui-paging-container li.ui-paging-toolbar select {height: 25px;border: 1px solid #ddd;color: #666;}
.ui-paging-container li.ui-paging-toolbar input {line-height: 20px;height: 23px;padding: 0;border: 1px solid #ddd;text-align: center;width: 33px;margin: 0 0 0 5px;vertical-align: middle;}
.ui-paging-container li.ui-paging-toolbar a {vertical-align: middle; text-decoration: none;display: inline-block;height: 23px;border: 1px solid #ddd;vertical-align: top;border-radius: 2px;line-height: 20px;padding: 0 3px;cursor: pointer;margin-left: 5px;color: #666;}
.ui-paging-container li.ui-pager-disabled, .ui-paging-container li.ui-pager-disabled:hover {background-color: #f6f6f6;cursor: not-allowed;border: none;color: #ddd;}
.ui-paging-container li.ui-pager-disabled a { color: #ddd;text-decoration: none;}
看了样式的人应该发现了吧,原本是有一个选择框的,被我删了,选择框是用来控制页面显示信息的条数,因为这个控制目前不需要前端有,所以我取消了。
好了,说说怎么调用吧。
| 属性 | 默认值 | 说明 |
| containerClass | string,默认值为:'' | 为最外层div增加自定义样式 |
| itemContainerClass | string|function,默认值为:null | 为li标签增加自定义样式 |
| itemContentClass | string|function,默认值为:null | 为a标签添加自定义样式 |
| currentPage | Number,默认值为:1 | 定义插件初始化后显示的页 |
| ShowPagesNum | Number,默认值为:5 | 定义插件显示的按钮数量(不包括首页、末页、上一页、下一页等按钮) |
| totalPages | Number,默认值为:1 | 定义插件总页数 |
| pageUrl | string|function,默认值为:null | 为a标签加上href属性 |
| onPageClicked | string|function,默认值为:null | 函数四个参数:even、originalEvent、type、 page,type的值为:first|prev|next|last| page|turn|ellipsis,page的值为单击按钮时跳转的页码,current是跳转前 的页码 |
| onPageChanged | string|function,默认值为:null | 函数四个参数:even、originalEvent、type、 page,type的值为:first|prev|next|last| page|turn|ellipsis,page的值为单击按钮时跳转的页码,current是跳转前 的页码 |
| useBootstrapTooltip | boolean,默认值为:false | 是否使用bootstrap的提示框插件 |
| shouldShowPage | function,默认值为:true | 函数三个参数:type, page, current,type的值为:first|prev|next|last| page|turn|ellipsis,page的值为单击按钮时跳转的页码,current是跳转前 的页码 |
| itemTexts | function | 可以修改页码的显示,如把type为first的文字改成'首页' 三个参数:type, page, current |
| tooltipTitles | function | 修改页码元素的title属性,默认有一个简单的实现, 三个参数:type, page, current |
| bootstrapTooltipOptions | object | 这个是把title注入到bootstrap的tooltip插件的模板 |
大部分都还是保持和bootstrap-paginator插件的属性。
下面怎么调用呢?给一个html的实例吧。
首先把定义的样式拿进来,就是上面那个,存一个文件,引入(也可以和你自己的css文件放在一起,可以减少http请求次数)。
<link href="~/Content/css/style.css" rel="stylesheet" />
这些都是基于jquery的插件,并且要1.8以上的版本。
<script src="~/Scripts/jquery-1.10.2.js"></script>
接下来就是引用我们最重要的js文件了。
<script src="~/Scripts/mypager.js"></script>
html中放一个div,这个div就是接下来要生成分页控件的父元素。记住一定是要div,bootstrap-paginator中bootstrap2是用div,bootstrap3是用ul。这里因为我们自己写的样式,就被我改成了必须是div。
<div id="pager"></div>
写一个简单的调用脚本。
var option = {
currentPage: 1,
totalPages: 10,
ShowPagesNum: 5
};
$('#pager').myPager(option);
HTML里的调用就到这里了。我用的是ASP.NET MVC,所以直接用Razor引擎把ViewData或者ViewBag的数据装载进js里就好了。当然,既然打算这样用了,最好在后端直接写一个类,我给个例子。
public class Pager
{
/// <summary>
/// 当前页码
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages { get; set; }
/// <summary>
/// 每页展示信息数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 前端分页调用的js方法名
/// </summary>
public string PagerFun { get; set; }
public Pager()
{
}
public Pager(string pager)
{
PagerFun = pager;
}
}
前面几个属性都好理解,那个PagerFun是什么呢?在插件的属性中,有几个函数,比如:pageUrl、onPageClicked等,后端如果想在不同分页里调用不同分页按钮点击事件,只需要把对应的js函数名在Razor引擎中放进插件声明时的参数就好了。这里给个例子吧。
C# MVC控制器:
public ActionResult Index()
{
Pager pager = new Pager("test");
pager.PageIndex = 1;
pager.PageSize = 10;
pager.TotalPages = 10;
return View(pager);
}
ps:这里使用了刚刚上面那个Pager类。
CSHTML:
@{
Layout = null;
var pager = Model as WebApplication4.Models.Pager;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<link href="~/Content/css/style.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.js"></script>
<title>Index</title>
</head>
<body>
<div id="pager">
</div>
<script src="~/Scripts/mypager.js"></script>
<script>
var test = function (even,originalEvent,type, page) {
alert(page);
};
var option = {
currentPage: @pager.PageIndex,
totalPages: @pager.TotalPages,
ShowPagesNum: 5,
onPageClicked:@(pager.PagerFun)
};
$('#pager').myPager(option);
</script>
</body>
</html>
主要是onPageClicked:@(pager.PagerFun)这一句,在Razor引擎顶部我们声明了pager变量,从控制器中传到视图层,强转之后把PagerFun变量赋给了插件的onPageClicked属性,插件内部识别它是一个函数就调用了,例子中PagerFun的值为"test",效果是单击哪个按钮就弹出按钮代表的页码。
这只是其中一个函数,onPageChanged等都是可以的。第一次写,自己的js功底也并不是很深,借着bootstrap-paginator作者的源码学习了很多,代码也写得很优美!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# Bootstrap Paginator 分页插件
# Bootstrap Paginator+PageHelper实现分页效果
# bootstrap paginator分页插件的两种使用方式实例详解
# bootstrap paginator分页前后台用法示例
# 使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
# Bootstrap分页插件之Bootstrap Paginator实例详解
# Bootstrap Paginator分页插件使用方法详解
# Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
# bootstrap-paginator服务器端分页使用方法详解
# 值为
# 跳转
# 分页
# 单击
# 自己的
# 自定义
# 的是
# 几个
# 好了
# 看了
# 后端
# 我用
# 找了
# 首页
# 给个
# 有一个
# 的人
# 都是
# 就好了
# 一个函数
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python数据仓库与ETL构建实战_Airflow调度流程详解
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
如何在香港免费服务器上快速搭建网站?
QQ浏览器网页版登录入口 个人中心在线进入
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
如何快速查询网址的建站时间与历史轨迹?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何在企业微信快速生成手机电脑官网?
Laravel怎么调用外部API_Laravel Http Client客户端使用
网站图片在线制作软件,怎么在图片上做链接?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何使用Livewire构建动态组件?(入门代码)
如何自定义建站之星模板颜色并下载新样式?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何快速搭建高效简练网站?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
七夕网站制作视频,七夕大促活动怎么报名?
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
JavaScript如何操作视频_媒体API怎么控制播放
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
jquery插件bootstrapValidator表单验证详解
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
做企业网站制作流程,企业网站制作基本流程有哪些?
Python面向对象测试方法_mock解析【教程】
Laravel怎么实现模型属性的自动加密
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
如何在云主机快速搭建网站站点?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
在centOS 7安装mysql 5.7的详细教程
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
用v-html解决Vue.js渲染中html标签不被解析的问题
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南

