⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jquery.tablesorter.js

📁 使用JSP和Java Bean来构建一个网上书店。本章介绍的例子可以分成两大部分
💻 JS
📖 第 1 页 / 共 2 页
字号:
/* *  * TableSorter 2.0 - Client-side table sorting with ease! * Version 2.0.3 * @requires jQuery v1.2.3 *  * Copyright (c) 2007 Christian Bach * Examples and docs at: http://tablesorter.com * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html *  *//** * * @description Create a sortable table with multi-column sorting capabilitys *  * @example $('table').tablesorter(); * @desc Create a simple tablesorter interface. * * @example $('table').tablesorter({ sortList:[[0,0],[1,0]] }); * @desc Create a tablesorter interface and sort on the first and secound column in ascending order. *  * @example $('table').tablesorter({ headers: { 0: { sorter: false}, 1: {sorter: false} } }); * @desc Create a tablesorter interface and disableing the first and secound column headers. *  * @example $('table').tablesorter({ 0: {sorter:"integer"}, 1: {sorter:"currency"} }); * @desc Create a tablesorter interface and set a column parser for the first and secound column. *  *  * @param Object settings An object literal containing key/value pairs to provide optional settings. *  * @option String cssHeader (optional) 			A string of the class name to be appended to sortable tr elements in the thead of the table.  * 												Default value: "header" *  * @option String cssAsc (optional) 			A string of the class name to be appended to sortable tr elements in the thead on a ascending sort.  * 												Default value: "headerSortUp" *  * @option String cssDesc (optional) 			A string of the class name to be appended to sortable tr elements in the thead on a descending sort.  * 												Default value: "headerSortDown" *  * @option String sortInitialOrder (optional) 	A string of the inital sorting order can be asc or desc.  * 												Default value: "asc" *  * @option String sortMultisortKey (optional) 	A string of the multi-column sort key.  * 												Default value: "shiftKey" *  * @option String textExtraction (optional) 	A string of the text-extraction method to use.  * 												For complex html structures inside td cell set this option to "complex",  * 												on large tables the complex option can be slow.  * 												Default value: "simple" *  * @option Object headers (optional) 			An array containing the forces sorting rules.  * 												This option let's you specify a default sorting rule.  * 												Default value: null *  * @option Array sortList (optional) 			An array containing the forces sorting rules.  * 												This option let's you specify a default sorting rule.  * 												Default value: null *  * @option Array sortForce (optional) 			An array containing forced sorting rules.  * 												This option let's you specify a default sorting rule, which is prepended to user-selected rules. * 												Default value: null *    * @option Array sortAppend (optional) 			An array containing forced sorting rules.  * 												This option let's you specify a default sorting rule, which is appended to user-selected rules. * 												Default value: null *  * @option Boolean widthFixed (optional) 		Boolean flag indicating if tablesorter should apply fixed widths to the table columns. * 												This is usefull when using the pager companion plugin. * 												This options requires the dimension jquery plugin. * 												Default value: false * * @option Boolean cancelSelection (optional) 	Boolean flag indicating if tablesorter should cancel selection of the table headers text. * 												Default value: true * * @option Boolean debug (optional) 			Boolean flag indicating if tablesorter should display debuging information usefull for development. * * @type jQuery * * @name tablesorter *  * @cat Plugins/Tablesorter *  * @author Christian Bach/christian.bach@polyester.se */(function($) {	$.extend({		tablesorter: new function() {						var parsers = [], widgets = [];						this.defaults = {				cssHeader: "header",				cssAsc: "headerSortUp",				cssDesc: "headerSortDown",				sortInitialOrder: "asc",				sortMultiSortKey: "shiftKey",				sortForce: null,				sortAppend: null,				textExtraction: "simple",				parsers: {}, 				widgets: [],						widgetZebra: {css: ["even","odd"]},				headers: {},				widthFixed: false,				cancelSelection: true,				sortList: [],				headerList: [],				dateFormat: "us",				decimal: '.',				debug: false			};						/* debuging utils */			function benchmark(s,d) {				log(s + "," + (new Date().getTime() - d.getTime()) + "ms");			}						this.benchmark = benchmark;						function log(s) {				if (typeof console != "undefined" && typeof console.debug != "undefined") {					console.log(s);				} else {					alert(s);				}			}									/* parsers utils */			function buildParserCache(table,$headers) {								if(table.config.debug) { var parsersDebug = ""; }								var rows = table.tBodies[0].rows;								if(table.tBodies[0].rows[0]) {					var list = [], cells = rows[0].cells, l = cells.length;										for (var i=0;i < l; i++) {						var p = false;												if($.metadata && ($($headers[i]).metadata() && $($headers[i]).metadata().sorter)  ) {													p = getParserById($($headers[i]).metadata().sorter);													} else if((table.config.headers[i] && table.config.headers[i].sorter)) {								p = getParserById(table.config.headers[i].sorter);						}						if(!p) {							p = detectParserForColumn(table,cells[i]);						}							if(table.config.debug) { parsersDebug += "column:" + i + " parser:" +p.id + "\n"; }							list.push(p);					}				}								if(table.config.debug) { log(parsersDebug); }				return list;			};						function detectParserForColumn(table,node) {				var l = parsers.length;				for(var i=1; i < l; i++) {					if(parsers[i].is($.trim(getElementText(table.config,node)),table,node)) {						return parsers[i];					}				}				// 0 is always the generic parser (text)				return parsers[0];			}						function getParserById(name) {				var l = parsers.length;				for(var i=0; i < l; i++) {					if(parsers[i].id.toLowerCase() == name.toLowerCase()) {							return parsers[i];					}				}				return false;			}						/* utils */			function buildCache(table) {								if(table.config.debug) { var cacheTime = new Date(); }												var totalRows = (table.tBodies[0] && table.tBodies[0].rows.length) || 0,					totalCells = (table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length) || 0,					parsers = table.config.parsers, 					cache = {row: [], normalized: []};									for (var i=0;i < totalRows; ++i) {											/** Add the table data to main data array */						var c = table.tBodies[0].rows[i], cols = [];											cache.row.push($(c));												for(var j=0; j < totalCells; ++j) {							cols.push(parsers[j].format(getElementText(table.config,c.cells[j]),table,c.cells[j]));							}																		cols.push(i); // add position for rowCache						cache.normalized.push(cols);						cols = null;					};								if(table.config.debug) { benchmark("Building cache for " + totalRows + " rows:", cacheTime); }								return cache;			};						function getElementText(config,node) {								if(!node) return "";												var t = "";								if(config.textExtraction == "simple") {					if(node.childNodes[0] && node.childNodes[0].hasChildNodes()) {						t = node.childNodes[0].innerHTML;					} else {						t = node.innerHTML;					}				} else {					if(typeof(config.textExtraction) == "function") {						t = config.textExtraction(node);					} else { 						t = $(node).text();					}					}				return t;			}						function appendToTable(table,cache) {								if(table.config.debug) {var appendTime = new Date()}								var c = cache, 					r = c.row, 					n= c.normalized, 					totalRows = n.length, 					checkCell = (n[0].length-1), 					tableBody = $(table.tBodies[0]),					rows = [];								for (var i=0;i < totalRows; i++) {					rows.push(r[n[i][checkCell]]);						if(!table.config.appender) {												var o = r[n[i][checkCell]];						var l = o.length;						for(var j=0; j < l; j++) {														tableBody[0].appendChild(o[j]);												}												//tableBody.append(r[n[i][checkCell]]);					}				}									if(table.config.appender) {									table.config.appender(table,rows);					}								rows = null;								if(table.config.debug) { benchmark("Rebuilt table:", appendTime); }												//apply table widgets				applyWidget(table);								// trigger sortend				setTimeout(function() {					$(table).trigger("sortEnd");					},0);							};						function buildHeaders(table) {								if(table.config.debug) { var time = new Date(); }								var meta = ($.metadata) ? true : false, tableHeadersRows = [];							for(var i = 0; i < table.tHead.rows.length; i++) { tableHeadersRows[i]=0; };								$tableHeaders = $("thead th",table);						$tableHeaders.each(function(index) {												this.count = 0;					this.column = index;					this.order = formatSortingOrder(table.config.sortInitialOrder);										if(checkHeaderMetadata(this) || checkHeaderOptions(table,index)) this.sortDisabled = true;										if(!this.sortDisabled) {						$(this).addClass(table.config.cssHeader);					}										// add cell to headerList					table.config.headerList[index]= this;				});								if(table.config.debug) { benchmark("Built headers:", time); log($tableHeaders); }								return $tableHeaders;							};								   	function checkCellColSpan(table, rows, row) {                var arr = [], r = table.tHead.rows, c = r[row].cells;								for(var i=0; i < c.length; i++) {					var cell = c[i];										if ( cell.colSpan > 1) { 						arr = arr.concat(checkCellColSpan(table, headerArr,row++));					} else  {						if(table.tHead.length == 1 || (cell.rowSpan > 1 || !r[row+1])) {							arr.push(cell);						}						//headerArr[row] = (i+row);					}				}				return arr;			};						function checkHeaderMetadata(cell) {				if(($.metadata) && ($(cell).metadata().sorter === false)) { return true; };				return false;			}						function checkHeaderOptions(table,i) {					if((table.config.headers[i]) && (table.config.headers[i].sorter === false)) { return true; };				return false;			}						function applyWidget(table) {				var c = table.config.widgets;				var l = c.length;				for(var i=0; i < l; i++) {										getWidgetById(c[i]).format(table);				}							}						function getWidgetById(name) {				var l = widgets.length;				for(var i=0; i < l; i++) {					if(widgets[i].id.toLowerCase() == name.toLowerCase() ) {						return widgets[i]; 					}				}			};						function formatSortingOrder(v) {								if(typeof(v) != "Number") {					i = (v.toLowerCase() == "desc") ? 1 : 0;				} else {					i = (v == (0 || 1)) ? v : 0;				}				return i;			}						function isValueInArray(v, a) {				var l = a.length;				for(var i=0; i < l; i++) {					if(a[i][0] == v) {						return true;						}				}				return false;			}							function setHeadersCss(table,$headers, list, css) {				// remove all header information				$headers.removeClass(css[0]).removeClass(css[1]);								var h = [];				$headers.each(function(offset) {						if(!this.sortDisabled) {							h[this.column] = $(this);											}				});								var l = list.length; 				for(var i=0; i < l; i++) {					h[list[i][0]].addClass(css[list[i][1]]);				}			}						function fixColumnWidth(table,$headers) {				var c = table.config;				if(c.widthFixed) {					var colgroup = $('<colgroup>');					$("tr:first td",table.tBodies[0]).each(function() {						colgroup.append($('<col>').css('width',$(this).width()));					});					$(table).prepend(colgroup);				};			}						function updateHeaderSortCount(table,sortList) {				var c = table.config, l = sortList.length;				for(var i=0; i < l; i++) {					var s = sortList[i], o = c.headerList[s[0]];					o.count = s[1];					o.count++;				}			}						/* sorting methods */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -