论坛首页 Web前端技术论坛

利用JQuery写一个简单的分页插件

浏览 20173 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-17  

扩展JQuery很容易,作为一个练习,编写一个简单的分页插件,代码量不大,直接看代码好了:

$.fn.mypagination = function(totalProperty,opts){
	opts = $.extend({
		perPage:10,
 
		callback:function(){
		}
	},opts||{});
		
	return this.each(function(){
		function numPages(){
			return Math.ceil(totalProperty/opts.perPage);
		}
 
		
		function selectPage(page){
			return function(){
				currPage = page;
				if (page<0) currPage = 0;
				if (page>=numPages()) currPage = numPages()-1;
				render();
 
				$('img.page-wait',panel).attr('src','images/wait.gif');
				opts.callback(currPage+1);
				$('img.page-wait',panel).attr('src','images/nowait.gif');
			}
		}
		
		function render(){
 
			var html = '<table><tbody><tr>' 
				+'<td><a href="#"><img class="page-first"></a></td>'
				+'<td><a href="#"><img class="page-prev"></a></td>'
				+'<td><span>第<input type="text" class="page-num">页/共'+numPages()+'页</span></td>'
				+'<td><a href="#"><img class="page-next"></a></td>'
				+'<td><a href="#"><img class="page-last"></a></td>'
				+'<td><img src="images/nowait.gif" class="page-wait"></td>'
				+'<td><span style="padding-left:50px;">检索到'+totalProperty+'记录</span></td>'
				+'</tr></tbody></table>';
			var imgFirst = 'images/page-first-disabled.gif';
			var imgPrev = 'images/page-prev-disabled.gif';
			var imgNext = 'images/page-next-disabled.gif';
			var imgLast = 'images/page-last-disabled.gif';
			if (currPage > 0){
				imgFirst = 'images/page-first.gif';
				imgPrev = 'images/page-prev.gif';
			}
			if (currPage < numPages()-1){
				imgNext = 'images/page-next.gif';
				imgLast = 'images/page-last.gif';
			}
			panel.empty();
			panel.append(html);
			$('img.page-first',panel)
				.bind('click',selectPage(0))
				.attr('src',imgFirst);	
			$('img.page-prev',panel)
				.bind('click',selectPage(currPage-1))
				.attr('src',imgPrev);	
			$('img.page-next',panel)
				.bind('click',selectPage(currPage+1))
				.attr('src',imgNext);	
			$('img.page-last',panel)
				.bind('click',selectPage(numPages()-1))
				.attr('src',imgLast);
			$('input.page-num',panel)
				.val(currPage+1)
				.change(function(){
					selectPage($(this).val()-1)();
				});
		}
		
		var currPage = 0;
		var panel = $(this);
		render();
 
	});
}

 下面测试一下:

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" href="mypagination.css"/>
	<script type="text/javascript" src="jquery-1.2.6.js"></script>
	<script type="text/javascript" src="jquery.mypagination.js"></script>
	<script>
		$(document).ready(function(){
			$('#mypage').mypagination(10112,{
				callback:function(page){
					alert(page);
				}
			});
		});
	</script>
</head>
<div id="mypage" class="mypagination"></div>
 

 运行效果图如下:

 

  • 大小: 2.2 KB
   发表时间:2008-08-11  
要是写了注释就更好了,方便我们这样的小鸟也能够看懂。
0 请登录后投票
   发表时间:2008-09-11  
这个插件怎么用呢?
0 请登录后投票
   发表时间:2008-09-11  
changjiang.lee 写道
这个插件怎么用呢?

 

callback中显示指定页的页面就好。

另外,这个插件功能有些简单,仅是说明一下原理,使用时根据情况扩展或改写一下。

0 请登录后投票
   发表时间:2008-10-10  
<script type="text/javascript" src="jquery-1.2.6.js"></script> 
能上传下这个js吗
0 请登录后投票
   发表时间:2008-10-10  
375721064 写道
<script type="text/javascript" src="jquery-1.2.6.js"></script> 
能上传下这个js吗

http://jqueryjs.googlecode.com/files/jquery-1.2.6.js
0 请登录后投票
   发表时间:2008-10-23  
callback:function(page){ 
    $("#feeds").load("feeds.do?page="+page);  

这个page就是当前页码,最简单用load就可显示当前页码的页面了,当然需要在页面中加入<div id="feeds"></div>
0 请登录后投票
   发表时间:2008-11-14  
版主,能把怎样用的说地详细点吗?比方说:有个List names = new ArralyList();names.add("张三");names.add("李四");......多加几个,用table把list展现出来,怎样分页,希望能回答我,谢谢你,
0 请登录后投票
   发表时间:2008-11-19  
写的很好,就是文本框应该再加是css约束,要不五位以后的值就看不见了。
0 请登录后投票
   发表时间:2008-12-13  
好东西 界面很好看  看代码好像是针对一次绑定所有查询结果然后分页的 ?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics