根據(jù)Bootstrap Paginator改寫(xiě)的js分頁(yè)插件
剛剛出來(lái)實(shí)習(xí),之前實(shí)習(xí)的公司有一個(gè)分頁(yè)插件,和后端的數(shù)據(jù)字典約定好了的,基本上是看不到內(nèi)部是怎么實(shí)現(xiàn)的,新公司是做WPF的,好像對(duì)于A(yíng)SP.NET的東西不多,導(dǎo)師扔了一個(gè)小系統(tǒng)給我和另一個(gè)同事,指了兩種框架的方案就讓我們自己做了。。。
剛開(kāi)始在網(wǎng)上找了一下,覺(jué)得bootstrap-paginator的api暴露出來(lái),修改一下就可以做成之前實(shí)習(xí)公司的那種了,但是覺(jué)得沒(méi)有跳轉(zhuǎn),很奇怪,想要一個(gè),就動(dòng)手在github上把源碼拿下來(lái)了,不得不說(shuō),這代碼寫(xiě)得真是比我這些實(shí)習(xí)碼農(nóng)好太多。(之前實(shí)習(xí)公司的組長(zhǎng)臨走之前給了我?guī)讉€(gè)意見(jiàn),其中就有讓我多上全球最大的男性/交友社區(qū)github多去看看 - - )這里給一下地址吧。bootstrap-paginator下載地址
看了一些網(wǎng)上對(duì)于bootstrap-paginator插件的使用教程,對(duì)于使用起來(lái)還是沒(méi)太大問(wèn)題的,自己在改代碼的時(shí)候發(fā)現(xiàn)都不太全。
首先,插件有調(diào)節(jié)大小、調(diào)節(jié)浮動(dòng)位置的功能,但是我用的是bootstrap3,在bootstrap3中這些特性都不支持。。
后來(lái),我就找了一下別的樣式(前端無(wú)能,十分佩服前端大牛,硬是能把頁(yè)面組織起來(lái)),效果大概就是:
給一下這個(gè)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">跳轉(zhuǎn)</a> </li> </ul> </div>
樣式代碼很簡(jiǎn)單,如果有人想用的話(huà),可以修改一下我的樣式代碼。。真的好像不怎么好看。
.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;}
看了樣式的人應(yīng)該發(fā)現(xiàn)了吧,原本是有一個(gè)選擇框的,被我刪了,選擇框是用來(lái)控制頁(yè)面顯示信息的條數(shù),因?yàn)檫@個(gè)控制目前不需要前端有,所以我取消了。
好了,說(shuō)說(shuō)怎么調(diào)用吧。
屬性 | 默認(rèn)值 | 說(shuō)明 |
containerClass | string,默認(rèn)值為:'' | 為最外層div增加自定義樣式 |
itemContainerClass | string|function,默認(rèn)值為:null | 為li標(biāo)簽增加自定義樣式 |
itemContentClass | string|function,默認(rèn)值為:null | 為a標(biāo)簽添加自定義樣式 |
currentPage | Number,默認(rèn)值為:1 | 定義插件初始化后顯示的頁(yè) |
ShowPagesNum | Number,默認(rèn)值為:5 | 定義插件顯示的按鈕數(shù)量(不包括首頁(yè)、末頁(yè)、上一頁(yè)、下一頁(yè)等按鈕) |
totalPages | Number,默認(rèn)值為:1 | 定義插件總頁(yè)數(shù) |
pageUrl | string|function,默認(rèn)值為:null | 為a標(biāo)簽加上href屬性 |
onPageClicked | string|function,默認(rèn)值為:null | 函數(shù)四個(gè)參數(shù):even、originalEvent、type、 page,type的值為:first|prev|next|last| page|turn|ellipsis,page的值為單擊按鈕時(shí)跳轉(zhuǎn)的頁(yè)碼,current是跳轉(zhuǎn)前 的頁(yè)碼 |
onPageChanged | string|function,默認(rèn)值為:null | 函數(shù)四個(gè)參數(shù):even、originalEvent、type、 page,type的值為:first|prev|next|last| page|turn|ellipsis,page的值為單擊按鈕時(shí)跳轉(zhuǎn)的頁(yè)碼,current是跳轉(zhuǎn)前 的頁(yè)碼 |
useBootstrapTooltip | boolean,默認(rèn)值為:false | 是否使用bootstrap的提示框插件 |
shouldShowPage | function,默認(rèn)值為:true | 函數(shù)三個(gè)參數(shù):type, page, current,type的值為:first|prev|next|last| page|turn|ellipsis,page的值為單擊按鈕時(shí)跳轉(zhuǎn)的頁(yè)碼,current是跳轉(zhuǎn)前 的頁(yè)碼 |
itemTexts | function | 可以修改頁(yè)碼的顯示,如把type為first的文字改成'首頁(yè)' 三個(gè)參數(shù):type, page, current |
tooltipTitles | function | 修改頁(yè)碼元素的title屬性,默認(rèn)有一個(gè)簡(jiǎn)單的實(shí)現(xiàn), 三個(gè)參數(shù):type, page, current |
bootstrapTooltipOptions | object | 這個(gè)是把title注入到bootstrap的tooltip插件的模板 |
大部分都還是保持和bootstrap-paginator插件的屬性。
下面怎么調(diào)用呢?給一個(gè)html的實(shí)例吧。
首先把定義的樣式拿進(jìn)來(lái),就是上面那個(gè),存一個(gè)文件,引入(也可以和你自己的css文件放在一起,可以減少http請(qǐng)求次數(shù))。
<link href="~/Content/css/style.css" rel="stylesheet" />
這些都是基于jquery的插件,并且要1.8以上的版本。
<script src="~/Scripts/jquery-1.10.2.js"></script>
接下來(lái)就是引用我們最重要的js文件了。
<script src="~/Scripts/mypager.js"></script>
html中放一個(gè)div,這個(gè)div就是接下來(lái)要生成分頁(yè)控件的父元素。記住一定是要div,bootstrap-paginator中bootstrap2是用div,bootstrap3是用ul。這里因?yàn)槲覀冏约簩?xiě)的樣式,就被我改成了必須是div。
<div id="pager"></div>
寫(xiě)一個(gè)簡(jiǎn)單的調(diào)用腳本。
var option = { currentPage: 1, totalPages: 10, ShowPagesNum: 5 }; $('#pager').myPager(option);
HTML里的調(diào)用就到這里了。我用的是ASP.NET MVC,所以直接用Razor引擎把ViewData或者ViewBag的數(shù)據(jù)裝載進(jìn)js里就好了。當(dāng)然,既然打算這樣用了,最好在后端直接寫(xiě)一個(gè)類(lèi),我給個(gè)例子。
public class Pager { /// <summary> /// 當(dāng)前頁(yè)碼 /// </summary> public int PageIndex { get; set; } /// <summary> /// 總頁(yè)數(shù) /// </summary> public int TotalPages { get; set; } /// <summary> /// 每頁(yè)展示信息數(shù) /// </summary> public int PageSize { get; set; } /// <summary> /// 前端分頁(yè)調(diào)用的js方法名 /// </summary> public string PagerFun { get; set; } public Pager() { } public Pager(string pager) { PagerFun = pager; } }
前面幾個(gè)屬性都好理解,那個(gè)PagerFun是什么呢?在插件的屬性中,有幾個(gè)函數(shù),比如:pageUrl、onPageClicked等,后端如果想在不同分頁(yè)里調(diào)用不同分頁(yè)按鈕點(diǎn)擊事件,只需要把對(duì)應(yīng)的js函數(shù)名在Razor引擎中放進(jìn)插件聲明時(shí)的參數(shù)就好了。這里給個(gè)例子吧。
C# MVC控制器:
public ActionResult Index() { Pager pager = new Pager("test"); pager.PageIndex = 1; pager.PageSize = 10; pager.TotalPages = 10; return View(pager); }
ps:這里使用了剛剛上面那個(gè)Pager類(lèi)。
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變量,從控制器中傳到視圖層,強(qiáng)轉(zhuǎn)之后把PagerFun變量賦給了插件的onPageClicked屬性,插件內(nèi)部識(shí)別它是一個(gè)函數(shù)就調(diào)用了,例子中PagerFun的值為"test",效果是單擊哪個(gè)按鈕就彈出按鈕代表的頁(yè)碼。
這只是其中一個(gè)函數(shù),onPageChanged等都是可以的。第一次寫(xiě),自己的js功底也并不是很深,借著bootstrap-paginator作者的源碼學(xué)習(xí)了很多,代碼也寫(xiě)得很優(yōu)美!
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- Bootstrap Paginator+PageHelper實(shí)現(xiàn)分頁(yè)效果
- bootstrap paginator分頁(yè)插件的兩種使用方式實(shí)例詳解
- bootstrap paginator分頁(yè)前后臺(tái)用法示例
- 使用bootstrap-paginator.js 分頁(yè)來(lái)進(jìn)行ajax 異步分頁(yè)請(qǐng)求示例
- Bootstrap分頁(yè)插件之Bootstrap Paginator實(shí)例詳解
- Bootstrap Paginator分頁(yè)插件使用方法詳解
- Bootstrap Paginator分頁(yè)插件與ajax相結(jié)合實(shí)現(xiàn)動(dòng)態(tài)無(wú)刷新分頁(yè)效果
- bootstrap-paginator服務(wù)器端分頁(yè)使用方法詳解
相關(guān)文章
jQuery中$.grep() 過(guò)濾函數(shù) 數(shù)組過(guò)濾
這篇文章主要介紹了jQuery中$.grep() 過(guò)濾函數(shù) 數(shù)組過(guò)濾的相關(guān)資料,需非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11jquery實(shí)現(xiàn)對(duì)聯(lián)廣告的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)對(duì)聯(lián)廣告的方法,以一個(gè)完整實(shí)例形式詳細(xì)分析了jQuery對(duì)聯(lián)廣告的樣式與功能實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下2015-02-02jquery無(wú)限級(jí)聯(lián)下拉菜單簡(jiǎn)單實(shí)例演示
這篇文章主要向大家推薦了一個(gè)jquery無(wú)限級(jí)聯(lián)下拉菜單簡(jiǎn)單實(shí)例演示,感興趣的小伙伴們可以參考一下2015-11-11用jQuery技術(shù)實(shí)現(xiàn)Tab頁(yè)界面之二
這個(gè)tab頁(yè)是把數(shù)據(jù)全部取回來(lái)再顯示,所以沒(méi)有數(shù)據(jù)緩存的特點(diǎn)。但是因?yàn)閿?shù)據(jù)全部是顯示的html代碼,所以對(duì)搜索引擎是友好的,也許對(duì)seo有好處。2009-09-09完美兼容各大瀏覽器的jQuery仿新浪圖文淡入淡出間歇滾動(dòng)特效
本文是作者學(xué)習(xí)jQuery之后練手之作,兼容各大瀏覽器,非常的精美實(shí)用,這里放出來(lái)給小伙伴們,有需要的直接拿走,別跟我客氣^_^2014-11-11jQuery實(shí)現(xiàn)的分頁(yè)插件完整示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的分頁(yè)插件,結(jié)合完整實(shí)例形式分析了jQuery分頁(yè)插件的定義與使用相關(guān)操作技巧,需要的朋友可以參考下2020-05-05jQuery去掉字符串起始和結(jié)尾的空格(多種方法實(shí)現(xiàn))
去掉字符串起始和結(jié)尾的空格在實(shí)際應(yīng)用中時(shí)很常見(jiàn)的的功能,本教程以多種方法為大家介紹下去掉空格的方法,感興趣的朋友可以參考下哈2013-04-04