jquery插件--简单的分页插件

jquery插件开发--简单的分页插件

         jquery提供很方法的js插件开发函数,关于jquery插件的开发教程,可以参考博主的上一篇博文jQuery插件开发精品教程,这里就不再重复。

         由于项目中经常会使用到分页显示列表数据,这里就会用到关于一组分页按钮,之前的分页按钮是通过jsp的自定义标签来实现的一组分页按钮,关于jsp的自定义标签流程,可以参考《周记(jsp自定义标签)》。接触了jquery插件开发后,觉的js插件,不管是使用还是管理,或者是二次开发,都比jsp的自定义标签使用起来方便,这里就通过js的插件形势编写分页按钮组。

具体js插件代码如下:

;(function($,window,document,undefined){
	//自定义对象构造器
	var SimplePaging = function(ele,opt){
		this.$element = ele;
		this.defaults = {
			'test':"aaa",
			//必须参数
			'cPage':1,  //当前页码
			'tPage':1,  //总页数
			'clickFun':null,  //点击调用的函数名
			//可选参数
			'space':10,  //页面间距
			'showLast':true,  //是否显示第一页和最后页按钮组       true为显示
			'showNext':true,  //是否显示下一页和上一页按钮组	 true为显示
			'div':{
				'float':'right',
				'font-size':'14px',				
				'-moz-user-select': 'none',
				'-webkit-user-select':'none',
				'-ms-user-select':'none',
				'-khtml-user-select':'none',
				'user-select':'none'
			},
			'btn':{
				'display':'inline-block',
				'position': 'relative',
				'padding':'0 5px',
				'letter-spacing':'0px',
				'cursor':'pointer',
			},
			'btnOver':{
				'top':'-1px',
			},
			'btnOut':{
				'top':'0px',
			},
			'btnAction':{
				'display':'inline-block',
				'position': 'relative',
				'padding':'0 5px',
				'letter-spacing':'0px',
				'color':'#EA8010',				
			    'top':'-1px',
			    'cursor':'default',
			},
		};
		this.options = $.extend({},this.defaults,opt);
	};
	
	//自定义对象方法
	SimplePaging.prototype = {
		test:function(){
			this.$element.html(this.options.test);
			return this.$element;
		},
		writePageBtn:function(){   //   1  10  20  30 31 32 33 34 35 36 37 38 39 40 50 60 ...
			var cPage = this.options.cPage;
			var tPage = this.options.tPage;
			var space = this.options.space;
			var funName = this.options.clickFun;
			var c = Math.ceil(cPage/space);
			//var l = Math.ceil(tPage/space);
			var id = this.$element.prop("id");
			var pageDiv = '';
			//第一页
			if(this.options.showLast){
				pageDiv = pageDiv + '<span class="pageSpan_'+id+'" οnclick="'+funName+'(1)">|<</span>';
			}
			//上一页
			if(this.options.showNext){
				if(cPage>1){
					pageDiv = pageDiv + '<span class="pageSpan_'+id+'" οnclick="'+funName+'('+(cPage-1)+')"><<</span>';
				}else{
					pageDiv = pageDiv + '<span class="pageSpan_'+id+'" οnclick="javascript:confirm(\'当前已为第一页\');"><<</span>';
				}
			}
			//前期页区间前部分
		 	for(var i=1;i<c;i++){
		 		pageDiv = pageDiv +  '<span class="pageSpan_'+id+'" οnclick="'+funName+'('+(i*space)+')">'+(i*space)+'</span>';	
			}
			//当前页区间部分
			for(var i=(c-1)*space+1;i<=c*space&&i<=tPage;i++){
				//i = (i==0)?1:i;  //i=0时从1开始
				if(cPage==i){
					pageDiv = pageDiv +  '<span class="actionPageSpan_'+id+'">'+i+'</span>';
				}else{
					pageDiv = pageDiv +  '<span class="pageSpan_'+id+'" οnclick="'+funName+'('+i+')">'+i+'</span>';	
				}
			}
			//当前页区间后部分
			for(var i=c+1;i*space<=tPage;i++){
				pageDiv = pageDiv +  '<span class="pageSpan_'+id+'" οnclick="'+funName+'('+(i*space)+')">'+(i*space)+'</span>';
			}
			//下一页
			if(this.options.showNext){
				if(cPage<tPage){
					pageDiv = pageDiv + '<span class="pageSpan_'+id+'" οnclick="'+funName+'('+(cPage+1)+')">>></span>';
				}else{
					pageDiv = pageDiv + '<span class="pageSpan_'+id+'" οnclick="javascript:confirm(\'当前已为最后一页\');">>></span>';
				}
			}
			//最后页
			if(this.options.showLast){
				pageDiv = pageDiv + '<span class="pageSpan_'+id+'" οnclick="'+funName+'('+tPage+')">>|</span>';	
			}
			this.$element.html(pageDiv);
			
			//设置相关样式
			var div = $.extend({},this.defaults.div,this.options.div);
			this.$element.css(div);
			var btn = $.extend({},this.defaults.btn,this.options.btn);
			this.$element.find(".pageSpan_"+id).css(btn);
			var obj = this;
			this.$element.find(".pageSpan_"+id).hover(function(){
				var btnOver =  $.extend({},obj.defaults.btnOver,obj.options.btnOver);
				$(this).css(btnOver);
			},function(){
				var btnOut =  $.extend({},obj.defaults.btnOut,obj.options.btnOut);
				$(this).css(btnOut);
			});
			this.$element.find(".actionPageSpan_"+id).css(this.options.btnAction);
		}
	};
	
	//添加插件到jQuery
	$.fn.simplePaging = function(options){
		var simplePaging = new SimplePaging(this,options);
		return simplePaging.writePageBtn();
	};
	
})(jQuery,window,document);

注意:该js插件是基于jquery开发的,使用时需先导入jquery

 

简单使用代码:

<html>
<script src="jquery-1.10.2.js" ></script>
<script src="simplePaging.js"></script>
<script type="text/javascript">
	
function load(){
	var param = {
		"cPage":1,
		"tPage":54,
		"clickFun":"test",  //该函数接受一个cPage参数
		"showLast":false,
		"div":{"float":"left"}
	};
	$("#testDiv").simplePaging(param);
}

function test(cPage){
   //业务代码块

  //分页按钮组控制块
	var param = {
		"cPage":cPage,
		"tPage":54,
		"clickFun":"test",
		"showLast":false,
		"div":{"float":"left"}
	};
	$("#testDiv").simplePaging(param);
}

</script>
<body οnlοad="load()">
<div id="testDiv">
	<!-- 分页标签按钮 -->
</div>
</body>
</html>

效果:

插件参数说明:

this.defaults = {
			'test':"aaa",  //开发测试参数,无任何意义
			//必须参数
			'cPage':1,  //显示的当前页码
			'tPage':1,  //显示的总页数
			'clickFun':null,  //点击页码调用的函数名,该函数默认接受一个cPage参数
			//可选参数
			'space':10,  //隐藏页码的间距
			'showLast':true,  //是否显示第一页和最后页按钮组  true为显示
			'showNext':true,  //是否显示下一页和上一页按钮组  true为显示
			'div':{ },  //分页按钮组div的css样式
			'btn':{ },  //分页按钮组div中的页码按钮的css样式
			'btnOver':{ },  //鼠标浮在页码按钮上是页码按钮的css样式
			'btnOut':{ },  //鼠标离开页码按钮后页码按钮的css样式
			'btnAction':{},  //当前页码按钮的页码css样式
		};
//该参数为默认参数,可以根据需要二次开发,自定义参数

实际项目中的效果图




发布了78 篇原创文章 · 获赞 54 · 访问量 38万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览