`
gogole_09
  • 浏览: 201980 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jQuery插件--分页插件

阅读更多

  之前有在javaeye上看到使用jQuery插件来解决分页的方案,此处记录一下。

  具体知识点,请看代码注释。

  先上图先:

 

   首先来看一下页面调用:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>分页插件</title>
		<link rel="stylesheet" href="page.css"/>
		<script type="text/javascript" src="jquery-1.2.6.js"></script>
		<script type="text/javascript" src="jquery.page.js"></script>
		<script type="text/javascript">			
			$(document).ready(function(){
				 //选择渲染地点,然后调用,传入中页数,可以与服务器端很好结合
			$('#mypaget').mypage(10112,{
				callback:function(page){
					$('#result').html("<font>回调函数-----您选择了第"+page+"页</font>");
				}
			});
		});
		</script>
	</head>
	<body>
	<div id="mypaget" class="mypage"></div>
	<div id="result" class="mypage"></div>
	</body>
</html>

 

   插件具体实现代码:

 

$.fn.mypage = function(totalProperty, opts){
	//这里是插件实现的另一种方式 
    //$.extend 用于扩展自身方法
    opts = $.extend({
        perPage: 10,
        callback: function(){
        }
    }, opts ||
    {});
    
    return this.each(function(){
        /*计算总共页数*/
        function pagenum(){
            return Math.ceil(totalProperty / opts.perPage);
        }
        
        
        /*选定第几页*/
        function selectPage(page){
            return function(){
                currPage = page;
                if (page < 0) 
                    currPage = 0;
                if (page >= pagenum()) 
                    currPage = pagenum() - 1;
                
                render();
                
                $('img.page-wait', panel).attr('src', 'image/wait.gif');
                opts.callback(currPage + 1);
                $('img.page-wait', panel).attr('src', 'image/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">页/共' +
            pagenum() +
            '页</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 = 'image/page-first-disabled.gif';
            var imgnext = 'image/page-next-disabled.gif';
            var imgprev = 'image/page-prev-disabled.gif';
            var imglast = 'image/page-last-disabled.gif';
            
            if (currPage > 0) {
                imgfirst = 'image/page-first.gif';
                imgprev = 'image/page-prev.gif';
            }
            
            if (currPage < pagenum() - 1) {
                imgnext = 'image/page-next.gif';
                imglast = 'image/page-last.gif';
            }
            
            panel.empty();
            panel.append(html);
            
            /*添加相应的属性,绑定分页事件*/
            $('img.page-first', panel).bind('click', selectPage(0)).attr('src', imgfirst);
            
            $('img.page-next', panel).bind('click', selectPage(currPage + 1)).attr('src', imgnext);
            
            $('img.page-prev', panel).bind('click', selectPage(currPage - 1)).attr('src', imgprev);
            
            $('img.page-last', panel).bind('click', selectPage(pagenum() - 1)).attr('src', imglast);
            
            $('input.page-num', panel).val(currPage + 1).change(function(){
                /*调用选择页面方法,将当前的参数传入进去*/
                selectPage($(this).val() - 1)();
            });
            
        }
        var currPage = 0;
        var panel = $(this);
        render();
    });
    
}

 

  • 大小: 4.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics