jQuery分页插件分享

本人菜鸟一枚,第一次编写博客,当然也是第一次技术分享,只保证代码确实可行,不保证代码质量,还请见谅。后续会持续更新版本,敬请期待

//version 0.0.1
(function($){
	$.fn.extend({
		paging: function(option){//option为用户自定义参数值最终会通过$.extend覆盖defaults中的值
			var $obj = $(this);//调用方法的父类
			var defaults = {
				currentPage: 1, //当前页面
            	pageCount:10 //数据总页码
        	};
        	var settings = $.extend(defaults, option || {});  //初始化
        	var currentPage = settings.currentPage;//设置当前页面
        	var pageCount = settings.pageCount;//设置总页数
        	init();//运行初始化函数
        	function init(){
        		$obj.html('');
        		if(pageCount <= 6){
        			standlt();
        		}else{
        			standgt();
        		}
        	}
        	//standlt start  改函数为小于某一数值时的情况  此处定义的是6  如果想使插件更灵活,可以将其定义在defaults中
        	function standlt(){
        		var prevPage = '<label class="bold prevPage"><<</label>';//上一页
        		var nextPage = '<label class="bold nextPage">>></label>';//下一页
        		var html;//声明变量,最后遍历页码
        		if(pageCount <= 1){//当总页码数等于1时隐藏分页
        			$obj.hide();
        		}else if(pageCount == 2){//等于2时需要判断当前页
        			if(currentPage == 1){
        				html = '<span>1</span><span>2</span>' + nextPage;
        				$obj.append(html);
        				changeBackground(0);
        				return;
        			}else{
        				html = prevPage + '<span>1</span><span>2</span>';
        				$obj.append(html);
        				changeBackground(1);
        				return;
        			}
        		}else if(pageCount >= 3 && pageCount <= 6){//当总页码数在3和6之间的情况
        			if(currentPage != 1){
        				html = prevPage;
        			}else{
        				html = '';
        			}       			
        			for(var i = 1; i <= pageCount; i++){
        				html += '<span>' + i + '</span>';
        			}
        			if(currentPage != pageCount){
        				html += nextPage;
        			}else{
        				html = html;
        			}       			
        			$obj.append(html);
        			changeBackground(currentPage -1);
        			return;
        		}
        		
        	}

        	//总页码数大于6的情况
        	function standgt(){
        		/*1.当页面数比较多,得有首页和末页选项,如果当前页小于等于3,首页标签隐藏,
				**如果当前页+2大于等于pageCount,末页标签隐藏。
				**2.当前页一直保持在最中间。
        		*/
        		var startPage = '<label class="startPage">start</label>';//首页
        		var endPage = '<label class="endPage">end</label>';//末页
        		var prevPage = '<label class="bold prevPage"><<</label>';//上一页
        		var nextPage = '<label class="bold nextPage">>></label>';//下一页
        		var html;//声明变量,最后遍历页码
        		if(currentPage >= 1 && currentPage <= 3){
        			if(currentPage > 1){
        				html = prevPage;
        			}else{
        				html = '';
        			}
        			for(var i = 1; i <= 5; i++){
        				html += '<span>' + i + '</span>';
        			}
        			html += nextPage + endPage;
        			$obj.append(html);
        			changeBackground(currentPage - 1);
        			return;
        		}else if(currentPage >= pageCount - 2 && currentPage <= pageCount){
        			html = startPage + prevPage;
        			for(var i = pageCount - 4; i <= pageCount; i++){
        				html += '<span>' + i + '</span>';
        			}
        			if(currentPage != pageCount){
        				html += nextPage;
        			}else{
        				html = html;
        			}        			
        			$obj.append(html);
        			$obj.find('span').each(function(index, value){
     					if(value.innerHTML == currentPage){
     						changeBackground(index);
     					}
        			})        			
        			return;
        		}else if(currentPage > 3 && currentPage < pageCount - 2){
        			html = startPage + prevPage;
        			for(var i = currentPage - 2; i <= currentPage + 2; i++){
        				html += '<span>' + i + '</span>';
        			}
        			html += nextPage + endPage;
        			$obj.append(html);
        			changeBackground(2);
        			return;
        		}


        	}

        	function changeBackground(currentPage){
        		var obj_span = $obj.find('span');
        		obj_span.removeClass('currentBackground').eq(currentPage).addClass('currentBackground');
        	}
        	$obj.on('click','.prevPage',function(){
        		--currentPage;
        		init();      		
        	});
        	$obj.on('click','.nextPage',function(){
        		++currentPage;
        		init();       		
        	})
        	//点击首页将currentPage置为1
        	$obj.on('click','.startPage',function(){
        		currentPage = 1;
        		init();       		
        	})
        	//点击首页将currentPage置为pageCount
        	$obj.on('click','.endPage',function(){
        		currentPage = pageCount;
        		init();       		
        	})
        	$obj.on('click','span',function(){
				var current = $(this).html();
				currentPage = parseInt(current);
				init();				
			});
		}
	})
})(jQuery);

在调用该插件之前请先引入jQuery文件,调用方法如下

html代码

<div id="pagination"></div>

jquery代码

$('#pagination').paging();//一行代码就搞定,就是这么easy

当然也可以自己配置,例如当前页面为第8页,总页数有10页调用方法如下

$('#pagination').paging({'currentPage':8,'pageCount':10});

到这里  over !吐舌头














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值