/** * this jquery plugin displays pagination links inside the selected elements. * * @author gabriel birke (birke *at* d-scribe *dot* de) * @version 1.2 * @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:10, num_display_entries:10, current_page:0, num_edge_entries:0, 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/2); 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), 0):0; 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(); // 杩欎釜杈呭姪鍑芥暟杩斿洖涓€涓鐞嗗嚱鏁拌皟鐢ㄦ湁鐫€姝g‘page_id鐨刾ageselected銆? var getclickhandler = function(page_id) { return function(evt){ return pageselected(page_id,evt); } } //杈呭姪鍑芥暟鐢ㄦ潵浜х敓涓€涓崟閾炬帴(濡傛灉涓嶆槸褰撳墠椤靛垯浜х敓span鏍囩) var appenditem = function(page_id, appendopts){ page_id = page_id<0?0:(page_id"+(appendopts.text)+""); }else{ var lnk = jquery(""+(appendopts.text)+"") .bind("click", getclickhandler(page_id)) .attr('href', opts.link_to.replace(/__id__/,page_id)); } if(appendopts.classes){lnk.addclass(appendopts.classes);} panel.append(lnk); } // 浜х敓"previous"-閾炬帴 if(opts.prev_text && (current_page > 0 || opts.prev_show_always)){ appenditem(current_page-1,{text:opts.prev_text, classes:"prev"}); } // 浜х敓璧峰鐐? if (interval[0] > 0 && opts.num_edge_entries > 0) { var end = math.min(opts.num_edge_entries, interval[0]); for(var i=0; i"+opts.ellipse_text+"").appendto(panel); } } // 浜х敓鍐呴儴鐨勪簺閾炬帴 for(var i=interval[0]; i 0) { if(np-opts.num_edge_entries > interval[1]&& opts.ellipse_text) { jquery(""+opts.ellipse_text+"").appendto(panel); } var begin = math.max(np-opts.num_edge_entries, interval[1]); for(var i=begin; i 0) { pageselected(current_page - 1); return true; } else { return false; } } this.nextpage = function(){ if(current_page < numpages()-1) { pageselected(current_page+1); return true; } else { return false; } } // 鎵€鏈夊垵濮嬪寲瀹屾垚锛岀粯鍒堕摼鎺? drawlinks(); // 鍥炶皟鍑芥暟 opts.callback(current_page, this); }); }