AJax技术

jquery插件pagination实现无刷新ajax分页

字号+ 作者:H5之家 来源:H5之家 2015-11-24 13:01 我要评论( )

IT学习网是国内以普及电脑技术的学习资料网站,本站历经长期发展已深得广大电脑爱好者的好评和喜爱,为您提供从基础到高端的信息技术学习平台,我们也努力将IT学习

1、前台使用ajax无刷新分页,主要需要生成分页的工具条,这里使用的是jquery.pagination.js

插件参数可以参考----张龙豪-jquery.pagination.js分页

下面贴出代码

/** * This jQuery plugin displays pagination links inside the selected elements. * * @author Gabriel Birke (birke *at* d-scribe *dot* de) * @version . * @param {int} maxentries Number of entries to paginate * @param {Object} opts Several options (see README for documentation) * @return {Object} jQuery Object */ jQuery.fn.pagination = function(maxentries, opts){ opts = jQuery.extend({ items_per_page:, num_display_entries:, current_page:, num_edge_entries:, link_to:"#", prev_text:"Prev", next_text:"Next", ellipse_text:"...", prev_show_always:true, next_show_always:true, callback:function(){return false;} },opts||{}); return this.each(function() { /** * 计算最大分页显示数目 */ function numPages() { return Math.ceil(maxentries/opts.items_per_page); } /** * 极端分页的起始和结束点,这取决于current_page 和 num_display_entries. * @返回 {数组(Array)} */ function getInterval() { var ne_half = Math.ceil(opts.num_display_entries/); var np = numPages(); var upper_limit = np-opts.num_display_entries; var start = current_page>ne_half?Math.max(Math.min(current_page-ne_half, upper_limit), ):; var end = current_page>ne_half?Math.min(current_page+ne_half, np):Math.min(opts.num_display_entries, np); return [start,end]; } /** * 分页链接事件处理函数 * @参数 {int} page_id 为新页码 */ function pageSelected(page_id, evt){ current_page = page_id; drawLinks(); var continuePropagation = opts.callback(page_id, panel); if (!continuePropagation) { if (evt.stopPropagation) { evt.stopPropagation(); } else { evt.cancelBubble = true; } } return continuePropagation; } /** * 此函数将分页链接插入到容器元素中 */ function drawLinks() { panel.empty(); var interval = getInterval(); var np = numPages(); // 这个辅助函数返回一个处理函数调用有着正确page_id的pageSelected。 var getClickHandler = function(page_id) { return function(evt){ return pageSelected(page_id,evt); } } //辅助函数用来产生一个单链接(如果不是当前页则产生span标签) var appendItem = function(page_id, appendopts){ page_id = page_id<?:(page_id<np?page_id:np-); // 规范page id值 appendopts = jQuery.extend({text:page_id+, classes:""}, appendopts||{}); if(page_id == current_page){ var lnk = jQuery("<a href>" + (appendopts.text) + "</a>"); }else{ var lnk = jQuery("<a>"+(appendopts.text)+"</a>") .bind("click", getClickHandler(page_id)) .attr('href', opts.link_to.replace(/__id__/,page_id)); } if (appendopts.classes) { lnk.addClass(appendopts.classes); } panel.append(lnk); } //产生描述 panel.append("<span>共有 " + maxentries + " 条记录,当前第 <b>" + (current_page + ) + "</b>/" + np + " 页</span>"); // 产生"Previous"-链接 if(opts.prev_text && (current_page > || opts.prev_show_always)){ appendItem(current_page-,{text:opts.prev_text, classes:"prev"}); } // 产生起始点 if (interval[] > && opts.num_edge_entries > ) { var end = Math.min(opts.num_edge_entries, interval[]); for(var i=; i<end; i++) { appendItem(i); } if(opts.num_edge_entries < interval[] && opts.ellipse_text) { jQuery("<a href>"+opts.ellipse_text+"</a>").appendTo(panel); } } // 产生内部的些链接 for(var i=interval[]; i<interval[]; i++) { appendItem(i); } // 产生结束点 if (interval[] < np && opts.num_edge_entries > ) { if(np-opts.num_edge_entries > interval[]&& opts.ellipse_text) { jQuery("<a href>"+opts.ellipse_text+"</a>").appendTo(panel); } var begin = Math.max(np-opts.num_edge_entries, interval[]); for(var i=begin; i<np; i++) { appendItem(i); } } // 产生 "Next"-链接 if(opts.next_text && (current_page < np- || opts.next_show_always)){ appendItem(current_page+,{text:opts.next_text, classes:"next"}); } } //从选项中提取current_page var current_page = opts.current_page; //创建一个显示条数和每页显示条数值 maxentries = (!maxentries || maxentries < )?:maxentries; opts.items_per_page = (!opts.items_per_page || opts.items_per_page < )?:opts.items_per_page; //存储DOM元素,以方便从所有的内部结构中获取 var panel = jQuery(this); // 获得附加功能的元素 this.selectPage = function(page_id){ pageSelected(page_id);} this.prevPage = function(){ if (current_page > ) { pageSelected(current_page - ); return true; } else { return false; } } this.nextPage = function(){ if(current_page < numPages()-) { pageSelected(current_page+); return true; } else { return false; } } // 所有初始化完成,绘制链接 drawLinks(); // 回调函数 //opts.callback(current_page, this); }); }

代码还是比较容易看明白的,可以根据自己需要修改,这里使用的是自己的样式

标签分类:

无刷新ajax分 jquery.pagin 上一篇:上一篇:RequireJS入门一之实现第一个例子
下一篇: 下一篇:基于jQuery Bar Indicator 插件实现进度条展示效果

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jQuery实现的网页左侧在线客服效果代码

    jQuery实现的网页左侧在线客服效果代码

    2015-11-14 15:48

  • JavaScript调用传递变量参数的相关问题及解决办法

    JavaScript调用传递变量参数的相关问题及解决办法

    2015-11-03 19:37

  • 从内存地址解析Java的static关键字的作用

    从内存地址解析Java的static关键字的作用

    2015-11-03 19:30

  • Ajax技术第2讲 Ajax原理图

    Ajax技术第2讲 Ajax原理图

    2015-10-31 08:04

网友点评
i