jquery分页代码及算法如何优化
自己写了个分页的函数,总感觉算法及函数写的很别扭。希望各路大神过来指点迷津一番,看看怎么整个优雅的函数出来,万分感激。欢迎大家来拍砖交流,相互学习。
page<9:
page>=9 {
1-4页且pageTotal>9:
page>4且pageTotal-page>=4:
page>4且pageTotal-page<4:
}
function pagination(options){
var defaults = {
page:1,
pageNum:10,
pageTotal:10,
url:''
};
var options = $.extend({},defaults,options),
dom_content = '',
page = options.page,//当前页
url = options.url,//连接
total = options.pageTotal,//总页数
prevPage,
nextPage;
if(page === 1){
prevPage = '<a class="page_on prev_disable">上一页</a>';
}else{
prevPage = '<a href='+url+'/'+Number(page-1)+' class="page_on">上一页</a>';
}
if(page === total){
nextPage = '<a class="page_on next_disable">下一页</a>';
}else{
nextPage = '<a href='+url+'/'+Number(page+1)+' class="page_on">下一页</a>';
}
if(total<9){
for(var i= 1;i<=total;i++){
var className = i==page?"active":" ";
dom_content += '<a href='+url+'/'+i+' class="page_on '+className+'">'+i+'</a>';
}
}else{
if(page<=4){
for(var i= 1;i<7;i++){
var className = i==page?"active":" ";
dom_content += '<a href='+url+'/'+i+' class="page_on '+className+'">'+i+'</a>';
};
dom_content +=' ...'+ ' <a href='+url+'/'+total+' class="page_on">'+total+'</a>';
}else if(page>4&&Number(total-page)>=4){
dom_content += '<a href='+url+'/1' + ' class="page_on">1</a> ' + '... ';
for(var i= Number(page-2);i<Number(page+3);i++){
var className = i==page?"active":" ";
dom_content += '<a href='+url+'/'+i+' class="page_on '+className+'">'+i+'</a>';
};
dom_content+=' ...'+' <a href='+url+'/'+total+' class="page_on">'+total+'</a>';
}else if(page>4&&Number(total-page)<4){
dom_content += '<a href='+url+'/1' + ' class="page_on">1</a> ' + '... ';
for(var i= Number(total-5);i<=total;i++){
var className = i==page?"active":" ";
dom_content += '<a href='+url+'/'+i+' class="page_on '+className+'">'+i+'</a>';
};
}
}
var dom =
$('<div class="pagination_wrapper">'+
prevPage+
dom_content+
nextPage+
'</div>');
return dom;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
既然是用 jQuery,何必再自己拼 HTML 呢,jQuery 的 DOM 处理能力很强的。另外,除 prev 和 next 之外,其它的相对有规律,可以先生成数据数组,再来生成 DOM,也就是
M -> V
的思想。代码我没测试,所以可能会有些小问题。