jom_ch

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理


jquery的jQuery pager plugin(jquery.pager.js)简单应用

一,关于jQuery pager plugin

演示地址:
http://jonpauldavies.github.com/JQuery/Pager/PagerDemo.html

下载地址:
http://jonpauldavies.github.com/JQuery/Pager/jquery.pager.js

作为jquery的一款简单分页插件,合理的使用可以得到相当不错的效果,比如下面的应用。

二,JSON & jQuery pager plugin 实现分页

项目需求:

实现一个投票系统,每次随机分页显示资源。

项目分析:

如果用传统的动态分页,如:

"select * from tab order by rand() limit $start,$end"

在数据量小的情况下,上下页资源重复的概率很高,考虑到资源数量不到500,
所以采用从服务器端一次性生成json串,然后下载到浏览器端进行分页处理。

三,程序实现

1,服务器端主要代码:

json.php
<?php
// 读取全部资源数据到数组
$allrows = ...
// 转换成json 串并且输出
echo json_encode($allrows);
?>

2,浏览器端主要代码:

<link rel="stylesheet" type="text/css" href="css/Pager.css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.pager.js"></script>
<script type="text/javascript">
// 每页显示资源数
var pagesize = 10;
// 总资源数
var rowcount = 0;
// 总页数
var pagecount = 0;
// json 对象
var ojson = {};
// json资源url
var requestJsonURI = "./json.php?"+Math.random();

/*
 这里使用 HTML锚点 与 window.location.href 函数相结合来实现分页效果,
 改变当前URL的锚点值并没有改变当前的URL,如调用:
 window.location.href = index.html#page=2;
 原url index.html与index.html#page=2 是同一个URL。
*/

// 取类似index.html#page=1 url 的page值
$_GET = function(_1)
{
 return (c = document.location.href.match(new RegExp("^.*[#]"+_1+"=([0-9]*)$"))) ? c[1] : 1;
}
// 响应单击事件,由 jQuery pager plugin 调用
PageClick = function(pageclickednumber)
{
 window.location.href="index.html#page="+pageclickednumber;
 PaintList();
 PaintPager($_GET("page"),pagecount,PageClick);
}
// 输出分页
PaintPager = function(_page,_pagecount,_callback)
{
 $("#pager").pager({ pagenumber: _page, pagecount: _pagecount, buttonClickCallback: _callback });
}
// 输出资源列表
PaintList = function()
{
 var start = ($_GET("page")-1)*pagesize;
 var end   = (start+pagesize) > rowcount ? rowcount : start+pagesize;
 var sHTML = "";
 for(var i=start;i<end;i++)
 {
  sHTML += "id:"+ojson[i].id+"------"+"title:"+ojson[i].title+"<br>";
 }
 $("#list").html(sHTML);
}
// 页面初始化处理
$(document).ready(function()
{
 $.ajax({url: requestJsonURI,type: 'GET',dataType: 'json',timeout: 1000,
 error: function()
 {
  alert('Error loading JSON document');
 },
 success: function(json)
 {
  rowcount = json.length;
  pagecount = Math.ceil(rowcount/pagesize);
  // 将获取的json对象赋值给全局json对象 ojson
  ojson = json;

  PaintList();
  PaintPager($_GET("page"),pagecount,PageClick);
 }
 });
});
</script>

// list 和 pager 的容器

<div id="list"></div>
<div id="pager" ></div>

四,结束语

以上内容适用于小数据量资源,如果数据量过大,下载等待的时间是无法接受的。

在需要随机分页显示的情况下,不知道有没有更好的解决办法,望高手予以留言指点!

 

posted on 2009-11-05 14:42  jom_ch  阅读(230)  评论(0编辑  收藏  举报