jQuery前端分页示例分享
作者:bea
大家在作分页时,多数是在后台返回一个导航条的html字符串,其实在前端用js也很好实现。 调用pager方法,输入参数,会返回一个导航条的html字符串。方法的内部比较简单。 代码如下: /** * pageSize, 每页显示数 * pageIndex, 当前页数 * pageCount 总页数 * url 连接地址 * pager(10, 1, 5, 'Index')使用方法示例 */ function pager(pageSize, pageInd
大家在作分页时,多数是在后台返回一个导航条的html字符串,其实在前端用js也很好实现。
调用pager方法,输入参数,会返回一个导航条的html字符串。方法的内部比较简单。
代码如下:
/**
* pageSize, 每页显示数
* pageIndex, 当前页数
* pageCount 总页数
* url 连接地址
* pager(10, 1, 5, 'Index')使用方法示例
*/
function pager(pageSize, pageIndex, pageCount, url) {
var intPage = 7; //数字显示
var intBeginPage = 0;//开始的页数
var intEndPage = 0;//结束的页数
var intCrossPage = parseInt(intPage / 2); //显示的数字
var strPage = "<div class='fr'><span class='pageinfo'>第 <font color='#FF0000'>" + pageIndex + "/" + pageCount + "</font> 页 每页 <font color='#FF0000'>" + pageSize + "</font> 条</span>";
if (pageIndex > 1) {
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=1&pageSize=" + pageSize + "'><span>首页</span></a> ";
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=" + (pageIndex - 1) + "&pageSize=" + pageSize + "'><span>上一页</span></a> ";
}
if (pageCount > intPage) {//总页数大于在页面显示的页数
if (pageIndex > pageCount - intCrossPage) {//当前页数>总页数-3
intBeginPage = pageCount - intPage + 1;
intEndPage = pageCount;
}
else {
if (pageIndex <= intPage - intCrossPage) {
intBeginPage = 1;
intEndPage = intPage;
}
else {
intBeginPage = pageIndex - intCrossPage;
intEndPage = pageIndex + intCrossPage;
}
}
} else {
intBeginPage = 1;
intEndPage = pageCount;
}
if (pageCount > 0) {
for (var i = intBeginPage; i <= intEndPage; i++) {
{
if (i == pageIndex) {//当前页
strPage = strPage + " <a class='current' href='javascript:void(0);'>" + i + "</a> ";
}
else {
strPage = strPage + " <a class='pageNav' href='" + url + "?pageIndex=" + i + "&pageSize=" + pageSize + "' title='第" + i + "页'>" + i + "</a> ";
}
}
}
}
if (pageIndex < pageCount) {
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=" + (pageIndex + 1) + "&pageSize=" + pageSize + "'><span>下一页</span></a> ";
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=" + pageCount + "&pageSize=" + pageSize + "'><span>尾页</span></a> ";
}
return strPage+"</div>";
}
试用这个方法试试
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="Script/ajax-pager.js"></script> <script src="Script/jquery-1.8.0.js"></script> <script type="text/javascript"> $(function () { loadData(1, 10); //分页条点击事件 $(document.body).on('click', '.pageNav', function () { var pageSize = Number(getQueryString('pageSize', $(this).attr('href'))); var pageIndex = Number(getQueryString('pageIndex', $(this).attr('href'))); loadData(pageIndex, pageSize); return false;//不跳转页面 }); }); //加载数据 function loadData(pageIndex, pageSize) { $.getJSON('Content/CustomersData.txt', { pageIndex: pageIndex, pageSize: pageSize }, function (data) { var beginIndex = (pageIndex - 1) * pageSize; var endIndex = pageIndex * pageSize - 1; var tbodyHtml = ''; for (var i = beginIndex; i < endIndex; i++) { if (!data.Rows[i]) { break; } var tbody = '<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td>'; tbody += '<td>{6}</td><td>{7}</td><td>{8}</td><td>{9}</td><td>{10}</td></tr>'; tbody = tbody.format(data.Rows[i].CustomerID, data.Rows[i].CompanyName, data.Rows[i].ContactName, data.Rows[i].ContactTitle, data.Rows[i].Address, data.Rows[i].City, data.Rows[i].Region ? data.Rows[i].Region : '', data.Rows[i].PostalCode, data.Rows[i].Country, data.Rows[i].Phone, data.Rows[i].Fax ? data.Rows[i].Fax : ''); tbodyHtml += tbody; } $('#tb').find('tbody').first().html(tbodyHtml); var pageCount = parseInt((data.Total / pageSize)) + (data.Total % pageSize ? 1 : 0); $('#dvPager').html(pager(pageSize, pageIndex, pageCount, 'CustomersData.txt')); } ); } //字符串格式化 String.prototype.format = function (args) { var result = this; var reg; if (arguments.length > 0) { if (arguments.length == 1 && typeof (args) == "object") { for (var key in args) { if (args[key] !== undefined) { reg = new RegExp("({" + key + "})", "g"); result = result.replace(reg, args[key]); } } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] !== undefined) { reg = new RegExp("({)" + i + "(})", "g"); result = result.replace(reg, arguments[i]); } } } } return result; }; //获取url参数 function getQueryString(name, url) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); url = url && url.indexOf('?') >= 0 ? url.substring(url.indexOf('?'), url.length) : window.location.search; var r = url.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } </script> </head> <body> <table id="tb" border="1" cellpadding="0" cellspacing="0"> <thead> <tr> <th width="90px;">CustomerID</th> <th width="240px;">CompanyName</th> <th width="130px;">ContactName</th> <th width="140px;">ContactTitle</th> <th width="205px;">Address</th> <th width="90px;">City</th> <th width="50px;">Region</th> <th width="80px;">PostalCode</th> <th width="80px;">Country</th> <th width="95px;">Phone</th> <th width="95px;">Fax</th> </tr> </thead> <tbody></tbody> </table> <div id="dvPager"></div> </body> </html> [/code]
看下效果
列有点多,我只截图了部分,界面好丑,加点样式,用bootstrap来美化下
使用Nuget安装bootstrap
加上样式后
虽说不是特别漂亮,但还是对得起观众吧。
代码下载https://github.com/dengjianjun/JsPager
如果觉得对你有帮助,请点个赞,谢谢!
有用 | 无用
调用pager方法,输入参数,会返回一个导航条的html字符串。方法的内部比较简单。
代码如下:
/**
* pageSize, 每页显示数
* pageIndex, 当前页数
* pageCount 总页数
* url 连接地址
* pager(10, 1, 5, 'Index')使用方法示例
*/
function pager(pageSize, pageIndex, pageCount, url) {
var intPage = 7; //数字显示
var intBeginPage = 0;//开始的页数
var intEndPage = 0;//结束的页数
var intCrossPage = parseInt(intPage / 2); //显示的数字
var strPage = "<div class='fr'><span class='pageinfo'>第 <font color='#FF0000'>" + pageIndex + "/" + pageCount + "</font> 页 每页 <font color='#FF0000'>" + pageSize + "</font> 条</span>";
if (pageIndex > 1) {
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=1&pageSize=" + pageSize + "'><span>首页</span></a> ";
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=" + (pageIndex - 1) + "&pageSize=" + pageSize + "'><span>上一页</span></a> ";
}
if (pageCount > intPage) {//总页数大于在页面显示的页数
if (pageIndex > pageCount - intCrossPage) {//当前页数>总页数-3
intBeginPage = pageCount - intPage + 1;
intEndPage = pageCount;
}
else {
if (pageIndex <= intPage - intCrossPage) {
intBeginPage = 1;
intEndPage = intPage;
}
else {
intBeginPage = pageIndex - intCrossPage;
intEndPage = pageIndex + intCrossPage;
}
}
} else {
intBeginPage = 1;
intEndPage = pageCount;
}
if (pageCount > 0) {
for (var i = intBeginPage; i <= intEndPage; i++) {
{
if (i == pageIndex) {//当前页
strPage = strPage + " <a class='current' href='javascript:void(0);'>" + i + "</a> ";
}
else {
strPage = strPage + " <a class='pageNav' href='" + url + "?pageIndex=" + i + "&pageSize=" + pageSize + "' title='第" + i + "页'>" + i + "</a> ";
}
}
}
}
if (pageIndex < pageCount) {
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=" + (pageIndex + 1) + "&pageSize=" + pageSize + "'><span>下一页</span></a> ";
strPage = strPage + "<a class='pageNav' href='" + url + "?pageIndex=" + pageCount + "&pageSize=" + pageSize + "'><span>尾页</span></a> ";
}
return strPage+"</div>";
}
试用这个方法试试
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="Script/ajax-pager.js"></script> <script src="Script/jquery-1.8.0.js"></script> <script type="text/javascript"> $(function () { loadData(1, 10); //分页条点击事件 $(document.body).on('click', '.pageNav', function () { var pageSize = Number(getQueryString('pageSize', $(this).attr('href'))); var pageIndex = Number(getQueryString('pageIndex', $(this).attr('href'))); loadData(pageIndex, pageSize); return false;//不跳转页面 }); }); //加载数据 function loadData(pageIndex, pageSize) { $.getJSON('Content/CustomersData.txt', { pageIndex: pageIndex, pageSize: pageSize }, function (data) { var beginIndex = (pageIndex - 1) * pageSize; var endIndex = pageIndex * pageSize - 1; var tbodyHtml = ''; for (var i = beginIndex; i < endIndex; i++) { if (!data.Rows[i]) { break; } var tbody = '<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td>'; tbody += '<td>{6}</td><td>{7}</td><td>{8}</td><td>{9}</td><td>{10}</td></tr>'; tbody = tbody.format(data.Rows[i].CustomerID, data.Rows[i].CompanyName, data.Rows[i].ContactName, data.Rows[i].ContactTitle, data.Rows[i].Address, data.Rows[i].City, data.Rows[i].Region ? data.Rows[i].Region : '', data.Rows[i].PostalCode, data.Rows[i].Country, data.Rows[i].Phone, data.Rows[i].Fax ? data.Rows[i].Fax : ''); tbodyHtml += tbody; } $('#tb').find('tbody').first().html(tbodyHtml); var pageCount = parseInt((data.Total / pageSize)) + (data.Total % pageSize ? 1 : 0); $('#dvPager').html(pager(pageSize, pageIndex, pageCount, 'CustomersData.txt')); } ); } //字符串格式化 String.prototype.format = function (args) { var result = this; var reg; if (arguments.length > 0) { if (arguments.length == 1 && typeof (args) == "object") { for (var key in args) { if (args[key] !== undefined) { reg = new RegExp("({" + key + "})", "g"); result = result.replace(reg, args[key]); } } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] !== undefined) { reg = new RegExp("({)" + i + "(})", "g"); result = result.replace(reg, arguments[i]); } } } } return result; }; //获取url参数 function getQueryString(name, url) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); url = url && url.indexOf('?') >= 0 ? url.substring(url.indexOf('?'), url.length) : window.location.search; var r = url.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } </script> </head> <body> <table id="tb" border="1" cellpadding="0" cellspacing="0"> <thead> <tr> <th width="90px;">CustomerID</th> <th width="240px;">CompanyName</th> <th width="130px;">ContactName</th> <th width="140px;">ContactTitle</th> <th width="205px;">Address</th> <th width="90px;">City</th> <th width="50px;">Region</th> <th width="80px;">PostalCode</th> <th width="80px;">Country</th> <th width="95px;">Phone</th> <th width="95px;">Fax</th> </tr> </thead> <tbody></tbody> </table> <div id="dvPager"></div> </body> </html> [/code]
看下效果
列有点多,我只截图了部分,界面好丑,加点样式,用bootstrap来美化下
使用Nuget安装bootstrap
加上样式后
虽说不是特别漂亮,但还是对得起观众吧。
代码下载https://github.com/dengjianjun/JsPager
如果觉得对你有帮助,请点个赞,谢谢!
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- javascript异步编程代码书写规范Promise学习笔记
- jquery实现动态操作select选中
- JS操作HTML自定义属性的方法
- jQuery制作仿Mac Lion OS滚动条效果
- jQuery扁平化风格下拉框美化插件FancySelect使用指南
- javascript中定义类的方法详解
- JavaScript判断浏览器类型的方法
- javascript定时器完整实例
- jQuery搜索子元素的方法
- jQuery搜索同辈元素方法
- Jquery搜索父元素操作方法
- jQuery表单域属性过滤器用法分析
- jQuery子属性过滤选择器用法分析
- jQuery内容过滤选择器用法分析
- jQuery过滤选择器用法分析
- jQuery表单域选择器用法分析
- jQuery层级选择器用法分析
- Jquery中CSS选择器用法分析
- Js为表单动态添加节点内容的方法