jquery【插件】 pagination使用

果学网-专注IT在线www.prismcollege.com

原文:http://zccst.iteye.com/blog/1415848,http://blog.csdn.net/luoyeyu1989/article/details/7000865

1,下载3个文件

分别为:jquery-1.7.1.js、jquery.pagination.js、pagination.css

2,准备好服务器端返回结果

主要代码如下:

Php代码  

  1. $members = array(array().......);  //详见附件
  2. $total          = count($members);
  3. $pageIndex      = $_POST[‘pageIndex‘];
  4. $items_per_page = $_POST[‘items_per_page‘];
  5. $result = array();
  6. $start = $pageIndex * $items_per_page;
  7. $end   = ($pageIndex+1) * $items_per_page;
  8. if($end > $total){$end = $total;}
  9. for($i = $start; $i < $end; $i++){
  10. $result[] = $members[$i];
  11. }
  12. print json_encode(array(‘total‘=>$total,‘result‘=>$result));

3,前端js代码(核心)

Js代码  

  1. var items_per_page = 3;
  2. var page_index = 0;
  3. function getDataList(index){
  4. var pageIndex = index;
  5. $.ajax({
  6. type: "POST",
  7. url: "members.php",
  8. data: "pageIndex="+pageIndex+‘&items_per_page=‘+items_per_page,
  9. dataType: ‘json‘,
  10. contentType: "application/x-www-form-urlencoded",
  11. success: function(msg){
  12. var total = msg.total;
  13. var html = ‘<table><tr><th>姓名</th><th>工作时间</th><th>籍贯</th><th>职务</th><th>生卒年</th><th>操作</th></tr>‘;
  14. $.each(msg.result,function(i,n){
  15. html += ‘<tr><td>‘+n[0]+‘</td><td>‘+n[1]+‘</td><td>‘+n[2]+‘</td><td>‘+n[3]+‘</td><td>‘+n[4]+‘</td>‘
  16. html += ‘<td><a href=#>删除</a></td></tr>‘;
  17. });
  18. html += ‘</table>‘;
  19. $(‘#Searchresult‘).html(html);
  20. //分页-只初始化一次
  21. if($("#Pagination").html().length == ‘‘){
  22. $("#Pagination").pagination(total, {
  23. ‘items_per_page‘      : items_per_page,
  24. ‘num_display_entries‘ : 10,
  25. ‘num_edge_entries‘    : 2,
  26. ‘prev_text‘           : "上一页",
  27. ‘next_text‘           : "下一页",
  28. ‘callback‘            : pageselectCallback
  29. });
  30. }
  31. }
  32. });
  33. }
  34. function pageselectCallback(page_index, jq){
  35. getDataList(page_index);
  36. }
  37. $(document).ready(function(){
  38. getDataList(page_index);
  39. });

4,前端html

Html代码  

  1. <dl id="Searchresult">
  2. <dt>Search Results will be inserted here ...</dt>
  3. </dl>
  4. <br style="clear:both;" />
  5. <div id="Pagination" class="pagination"></div>
  6. <br style="clear:both;" />

批注:

(1)jquery.js和jquery.pagination.js插件的加载有先后顺序,不能颠倒。特别是在复杂的页面中。

(2)jquery.pagination.js实现可以有很多种。不同的分页插件,使用时可能会有差别,所以最好有足够的js功底,读懂那些插件是如何实现,以及如何引用。

(3)pagination.css是样式,可以独立出来。也即可以使用很多种不同的样式修饰,不必是给出的那一个。

当然这样的话数据会重复加载2次

--第一次

$(document).ready(function(){

getDataList(page_index);

});

---第二次

‘callback‘: pageselectCallback

暂时解决方法是:

第一次加载且求出数据和分页大小,分页count等,等callback的时候判断一个DOM或input的状态,然后修改即可,

如:

$(document).ready(function() {

$.ajax({

type: "get",

data: "page=‘‘ &S=" + S + "&domain=" + domain + "&pagesize="+dopagesize,

url: "<?php echo $cmsapi; ?>/news",

dataType: "jsonp",

jsonp: "callback",

jsonpCallback: "jsonpNewsList",

success: function(data) {

if (data.result == 200) {

$(‘#aresult‘).empty();

if (!$.isEmptyObject(data.data.list)) {

$.each(data.data.list, function(a, list) { //装载对应分页的内容

$("#aresult").append(‘<li><span><a href=" detail-‘ + list.id + ‘.html"><div>‘ + list.title + ‘</div></a></span></li>‘);

});

} else {

$("#aresult").append(‘<li><span class="s_check">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;暂无数据</span></li>‘);

}

}

/**

* 初始化完成 显示分页

*/

initPagination(data.data.pages.itemCount, dopagesize);

},

error: function() {

alert(‘参数错误‘);

}

});

});

function initPagination(count, pagesize) {

// 创建分页

$("#Pagination").pagination(count, {//共24条

num_edge_entries: 1, //边缘页数 隐藏之前或之后个数

num_display_entries: 4, //主体页数显示8个多出隐藏

callback: pageselectCallback,

items_per_page: pagesize, //每页显示的3条目数   $this->pagesize

prev_text: "前一页",

next_text: "后一页"

});

}

function pageselectCallback(page_index, jq) {   //page_index 前一个表示您当前点击的那个分页的页数索引值

/**

* 扩展: 查询客户的关键字搜索

*/

var search_type = $("#search_type").val();

var orderby = $("#orderby").val();

var keywords = ‘‘;

var search = {};

var online_ajax = $("#online_ajax").val();

if (online_ajax != 1) {

$.ajax({

type: "get",

data: "page=" + (page_index + 1) + " &S=" + S + "&domain=" + domain + "&pagesize=3",

url: "<?php echo $cmsapi; ?>/news",

dataType: "jsonp",

jsonp: "callback",

jsonpCallback: "jsonpNewsList",

success: function(data) {

if (data.result == 200) {

$(‘#aresult‘).empty();

if (!$.isEmptyObject(data.data.list)) {

$.each(data.data.list, function(a, list) { //装载对应分页的内容

$("#aresult").append(‘<li><span><a href=" detail-‘ + list.id + ‘.html"><div>‘ + list.title + ‘</div></a></span></li>‘);

});

} else {

$("#aresult").append(‘<li><span class="s_check">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;暂无数据</span></li>‘);

}

}

},

error: function() {

alert(‘参数错误‘);

}

});

} else {

$("#online_ajax").val(‘2‘);

}

return false;

}

*********************************************************************************************************************

可以参考下如下改进:

说明

-----------

当您有很多很多数据,需要在网页中以分页的形式显示出来时,这个插件将会帮您创建分页。

使用说明

-----

在页面中引用jQuery和本分页的js及对应的css文件.

在body中创建一对容纳分页链接的标签。

给这个标签加上一个id或class属性(如: "News-Pagination").

这个属性将被用于jQuery选择器。

接下来,写一个含有new_page_index和paging_container这两个参数的js方法。这个方法是在你单击分页链接后的回调函数。

当你单击页码时,对应的页码会被选中。

function handlePaginationClick(new_page_index, pagination_container) {

// 这将选择20个内容数组中的元素

for(var i=new_page_id;i<;i++) {

$(‘#MyContentArea‘).append(content[i]);

}

return false;

}

这个回调函数中需要用到jQuery对dom操作的相关知识。

里面的代码就可以自己去写。

在页面初始化中,当你知道有很多记录要显示出来时,创建如下的分页元素:

// 第一个参数: 记录总数

// 第二个参数: 对象options

$("#News-Pagination").pagination(122, {

items_per_page:20, //pageSize每页最多显示多少条

callback:handlePaginationClick

});

这将在容器中创建分页的导航链接。您会看到

数字1-7,第一个数字是高亮显示的。当您单击另一个页码数字时,

高亮将会改变并且回调函数“handlePaginationClick”

被调用。

通过option和一些元素可以高度配置本插件。

可用的Options:

-----------------

以下为options的具体描述:

callback

当用户单击页码时,回调函数被调用.这个函数接收到两个参数: 新的页码index和分页容器(dom).

如果回调函数返回false,则事件不执行.

分页中这个回调函数是必不可少的!

它应该包括你所补充的一些代码。

为了加快用户体验,你不应该在此通过AJAX来加载内容。相反,您可以预加载一些内容然后通过此函数来分页浏览。

默认值: "function(){return false;}".

current_page

分页初始化时,被选中的那一页. 也就是当前页

默认值: 0

items_per_page

pageSize,每页最多显示的记录数。

默认值: 10

link_to

分页上的链接. 通常分页是通过onclick事件来触发的. 如果这个链接包含id之类的参数等

, 它将会替换掉原始的分页链接.

默认值: "#"

num_display_entries

可见的页码数量. 建议设置为奇数(对称好看些)

默认值: 11

next_text

“下一页”的文字

默认值: "Next"

next_show_always

是否总是显示“下一页”。

默认值: `true`

prev_text

“上一页”的文字。

默认值: "Previous"

prev_show_always

是否总是显示“上一页”。

默认值: true

num_edge_entries

如果设置为1,则显示“首页”与“尾页”。你也可以把它设置大点的数,以便显示更多的链接。

默认值: 0

ellipse_text

当页码数之间的数字相差很远时,比如:1 2 3 ... 10 11 12

显示的字符(在span中)

默认值: "..."

load_first_page

如果为true则当插件初始化时回调函数被执行。如果你通过ajax来显示内容,那么在初始化分页插件时应把它设置为false;

默认值: true

自定义事件触发分页

----------------------------------------

// 跳到第5页

$("#News-Pagination").trigger(‘setPage‘, [4]);

// 下一页

$("#News-Pagination").trigger(‘nextPage‘);

// 上一页

$("#News-Pagination").trigger(‘prevPage‘);

注:如果指定的页码在页码的范围之内则触发分页事件,否则不触发。

下载地址:http://ishare.iask.sina.com.cn/f/21330704.html

说明下:

1:ie6下面CSS问题,由于IE6不支持多项选择类(如:".current .next"中间没有空格),导致样式不对。把pagination.css的最后一个样式去掉。

.pagination {

font-size: 80%;

}

.pagination a {

text-decoration: none;

border: solid 1px #AAE;

color: #15B;

}

.pagination a, .pagination span {

display: block;

float: left;

padding: 0.3em 0.5em;

margin-right: 5px;

margin-bottom: 5px;

min-width:1em;

text-align:center;

}

.pagination .current {

background: #eee;

color: #555;

border: solid 1px #AAE;

}

2:手动设置"link_to"属性(让页面的url地址像样,xxxxxx.html?id=123):

[javascript] view
plain
copy

  1. <script type="text/javascript">
  2. // This is a very simple demo that shows how a range of elements can
  3. // be paginated.
  4. // The elements that will be displayed are in a hidden DIV and are
  5. // cloned for display. The elements are static, there are no Ajax
  6. // calls involved.
  7. /**
  8. * Callback function that displays the content.
  9. *
  10. * Gets called every time the user clicks on a pagination link.
  11. *
  12. * @param {int} page_index New Page index
  13. * @param {jQuery} jq the container with the pagination links as a jQuery object
  14. */
  15. function pageselectCallback(page_index, jq){
  16. var new_content = jQuery(‘#hiddenresult div.result:eq(‘+page_index+‘)‘).clone();
  17. $(‘#Searchresult‘).empty().append(new_content);
  18. //return false;
  19. }
  20. /**
  21. * Initialisation function for pagination
  22. */
  23. function initPagination() {
  24. // count entries inside the hidden content
  25. var num_entries = jQuery(‘#hiddenresult div.result‘).length;
  26. // Create content inside pagination element
  27. $("#Pagination").pagination(num_entries, {
  28. callback: pageselectCallback,
  29. items_per_page:3,// Show only one item per page
  30. num_edge_entries:2,
  31. link_to:"?id=__id__"//分页的js中会自动把"__id__"替换为当前的数。0为第一页
  32. });
  33. //页面加载时选中指定页
  34. $("#Pagination").trigger(‘setPage‘, [parseInt(getQueryString("id"))]);
  35. }
  36. // When document is ready, initialize pagination
  37. $(document).ready(function(){
  38. initPagination();
  39. });
  40. //获取url参数
  41. function getQueryString(name) {
  42. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  43. var r = window.location.search.substr(1).match(reg);
  44. if (r != null) return unescape(r[2]); return null;
  45. }
  46. </script>

3:ajax就很简单了。不说了。

时间: 2024-10-15 15:38:39

jquery【插件】 pagination使用的相关文章

jQuery插件pagination.js源码解读

pagination的github地址:https://github.com/gbirke/jquery_pagination 公司用的是1.2的版本,所以我就读1.2的了. jQuery.fn.pagination = function(maxentries, opts){ opts = $.extend({ isCurrentInfo: false,//是否显示当前页信息: 当前第1页,共10页 currentCls: '.current-info',//当前页class items_per

50个jQuery插件可将你的网站带到另一个高度

Web领域一直在发生变化并且其边界在过去的每一天都在发生变化(甚至不能以小时为计),随着其边界的扩展取得了许多新发展.在这些进步之中,开发者的不断工作创造了更大和更好的脚本,这些脚本以插件方式带来更好的终端用户体验,它们比原来更轻量级,还有更强的处理能力. 关键是这些新发展起来的脚本和插件是能构建响应式Web的,而且还不会丧失它们原有的功能特性——除了更优秀和更轻巧(就文件大小而言)之外,它们还不会增加页面加载的时间. 通过浏览文档,掌握JQuery的语法是很容易的.它可以支持选择DOM元素,创

jquery插件实现分页

1 Query Pagination分页插件 2 3 原项目地址:http://plugins.jquery.com/project/pagination 4 版本:v1.2 5 源文件下载:英文原版 或 中文翻译修改版 6 翻译:张鑫旭 7 demo实例页面 8 基本demo页面 9 Ajax demo页面 10 参数可编辑demo页面 11 插件简介 12 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢. 13 原插

jQuery插件ImgAreaSelect 实例讲解一(头像上传预览和裁剪功能)

上一节随笔中,我们已经知道了关于jQuery插件ImgAreaSelect基本的知识:那么现在看一下实例: 首先,要知道我们应该实现什么功能? (1)图片能够实现上传预览功能 (2)拖拽裁剪图片,使其能够显示裁剪后的区域 (3)显示要裁剪区域的坐标 其次,该如何引用该插件呢? 那就具体看一下吧! 第一步:先将样式和文件包引入(根据你自己的位置引入) <!--引入imgareaselect的css样式--> <link rel="stylesheet" type=&qu

12个最新免费的jQuery插件周报#5(2015年)

(06/03/2015 至 13/03/2015)这周收集的12个最好.最新的12个免费jQuery插件 Elastic SVG Sidebar Material Design 弹性SVG侧栏导航,受 Material Design 启发 Animating labels for input form 非常适合于小屏幕的动画浮动标签. jQuery Light Carousel Light Carousel 是一个轻量级的响应式 jQuery carousel轮播. jQuery polygon

jquery 插件 起步代码

/** * Created by W.J.Chang on 2014/6/25. */ ;(function($) { var methods= { check: function() { return this.each(function() { this.checked = true; }); } }; $.fn.pager = function(method) { if ( methods[method] ) { return methods[ method ].apply( this,

ichat在线客服jQuery插件(可能是历史上最灵活的)

ichat是一款开源免费在线客服jQuery插件,通过该插件,您可以自由的定制属于自己的在线客服代码. ichat充分吸收传统在线客服插件的优点,并加上自身的独特设计,使得ichat可定制性异常强大. ichat追求简单实用,走小清新路线,以便能够适应大多数网站风格. ichat几乎全部由配置生成,使用简便,不需要写html,但需要写js,因为配置是json对象. ichat体积小巧,代码高效,兼容性良好,采用jQuery插件封装,与原有系统零冲突. 效果预览图: 更多内容参见: ichat项目

第七章(插件的使用和写法)(7.6 编写 jQuery 插件)

7.6.1 插件的种类 编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护和提高开发效率. jQuery 的插件主要分为3种类型. 1 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的 jQuery 对象进行操作,是最常见的一种插件. 据不完全统计,95%以上的 jQuery 插件都是封装对象方法的插件,此类插件可以发挥出 jQuery 选择器的强大优势.有相当一部分的 jQuery 的方法,都是在 jQuery 脚本库内部通过这种

Jquery插件使用方法

在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求.目前页面中常用的一些组件,都有多种jQuery插件可供选择,网络上也有很多专门收集jQuery插件的网站.利用jQuery插件确实可以给我们的开发工作带来便捷,但是如果只是会简单使用,而对其中的原理不甚了解,那么在使用过程中碰到问题或者对插件进行定制开发时就会有诸多疑惑.本文的目的就是可以快速了解jQuery插件

原创jquery插件treeTable(转)

由于工作需要,要直观的看到某个业务是由那些子业务引起的异常,所以我需要用树表的方式来展现各个层次的数据. 需求: 1.数据层次分明: 2.数据读取慢.需要动态加载孩子节点: 3.支持默认展开多少层. 在网上找到了很多资料,发现treeTable方面的组件质量都不高,有些还不错样式不符合,性能也比较差.想想树表也挺简单的,不就是通过隐藏或者展现某些tr来实现嘛.于是乎,自己写一个. 2011年5月4号恰好放假一个下午,于是在家里风风火火开始构造自己的树表插件. 样式我就用了http://www.h