384 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			384 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 | 
						|
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | 
						|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us">
 | 
						|
<head>
 | 
						|
	<title>jQuery plugin: Tablesorter 2.0 - Writing custom widgets</title>
 | 
						|
	<link rel="stylesheet" href="css/jq.css" type="text/css" media="print, projection, screen" />
 | 
						|
	<link rel="stylesheet" href="../themes/blue/style.css" type="text/css" media="print, projection, screen" />
 | 
						|
	<script type="text/javascript" src="../jquery-latest.js"></script>
 | 
						|
	
 | 
						|
	<script type="text/javascript" src="../jquery.tablesorter.js"></script>
 | 
						|
	<script type="text/javascript" src="../addons/pager/jquery.tablesorter.pager.js"></script>
 | 
						|
	<script type="text/javascript" src="js/chili/chili-1.8b.js"></script>
 | 
						|
	<script type="text/javascript" src="js/docs.js"></script>
 | 
						|
	<script type="text/javascript">
 | 
						|
	$(function() {
 | 
						|
		// add new widget called repeatHeaders
 | 
						|
		$.tablesorter.addWidget({
 | 
						|
			// give the widget a id
 | 
						|
			id: "repeatHeaders",
 | 
						|
			// format is called when the on init and when a sorting has finished
 | 
						|
			format: function(table) {
 | 
						|
				// cache and collect all TH headers
 | 
						|
				if(!this.headers) {
 | 
						|
					var h = this.headers = []; 
 | 
						|
					$("thead th",table).each(function() {
 | 
						|
						h.push(
 | 
						|
							"<th>" + $(this).text() + "</th>"
 | 
						|
						);
 | 
						|
						
 | 
						|
					});
 | 
						|
				}
 | 
						|
				
 | 
						|
				// remove appended headers by classname.
 | 
						|
				$("tr.repated-header",table).remove();
 | 
						|
				
 | 
						|
				// loop all tr elements and insert a copy of the "headers"	
 | 
						|
				for(var i=0; i < table.tBodies[0].rows.length; i++) {
 | 
						|
					// insert a copy of the table head every 10th row
 | 
						|
					if((i%5) == 4) {
 | 
						|
						$("tbody tr:eq(" + i + ")",table).before(
 | 
						|
							$("<tr></tr>").addClass("repated-header").html(this.headers.join(""))
 | 
						|
						
 | 
						|
						);	
 | 
						|
					}
 | 
						|
				}
 | 
						|
				
 | 
						|
			}
 | 
						|
		});
 | 
						|
		
 | 
						|
		// call the tablesorter plugin and assign widgets with id "zebra" (Default widget in the core) and the newly created "repeatHeaders"
 | 
						|
		$("table").tablesorter({
 | 
						|
			widgets: ['zebra','repeatHeaders']
 | 
						|
		});
 | 
						|
 | 
						|
	}); 		
 | 
						|
	</script>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div id="banner">	
 | 
						|
	<h1>table<em>sorter</em></h1>
 | 
						|
	<h2>Writing custom widgets</h2>
 | 
						|
	<h3>Flexible client-side table sorting</h3>
 | 
						|
	<a href="index.html">Back to documentation</a>
 | 
						|
</div>
 | 
						|
<div id="main">
 | 
						|
 | 
						|
<h1>Javascript</h1>
 | 
						|
<pre class="javascript">
 | 
						|
// add new widget called repeatHeaders
 | 
						|
$.tablesorter.addWidget({
 | 
						|
	// give the widget a id
 | 
						|
	id: "repeatHeaders",
 | 
						|
	// format is called when the on init and when a sorting has finished
 | 
						|
	format: function(table) {
 | 
						|
		// cache and collect all TH headers
 | 
						|
		if(!this.headers) {
 | 
						|
			var h = this.headers = []; 
 | 
						|
			$("thead th",table).each(function() {
 | 
						|
				h.push(
 | 
						|
					"<th>" + $(this).text() + "</th>"
 | 
						|
				);
 | 
						|
				
 | 
						|
			});
 | 
						|
		}
 | 
						|
		
 | 
						|
		// remove appended headers by classname.
 | 
						|
		$("tr.repated-header",table).remove();
 | 
						|
		
 | 
						|
		// loop all tr elements and insert a copy of the "headers"	
 | 
						|
		for(var i=0; i < table.tBodies[0].rows.length; i++) {
 | 
						|
			// insert a copy of the table head every 10th row
 | 
						|
			if((i%5) == 4) {
 | 
						|
				$("tbody tr:eq(" + i + ")",table).before(
 | 
						|
					$("<tr></tr>").html(this.headers.join(""))
 | 
						|
				
 | 
						|
				);	
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
});
 | 
						|
 | 
						|
// call the tablesorter plugin and assign widgets with id "zebra" (Default widget in the core) and the newly created "repeatHeaders"
 | 
						|
$("table").tablesorter({
 | 
						|
	widgets: ['zebra','repeatHeaders']
 | 
						|
});
 | 
						|
</pre>
 | 
						|
 | 
						|
<h1>Demo</h1>
 | 
						|
<table cellspacing="1" class="tablesorter">
 | 
						|
	<thead>
 | 
						|
		<tr>
 | 
						|
			<th>Name</th>
 | 
						|
			<th>Major</th>
 | 
						|
			<th>Sex</th>
 | 
						|
			<th>English</th>
 | 
						|
			<th>Japanese</th>
 | 
						|
			<th>Calculus</th>
 | 
						|
			<th>Geometry</th>
 | 
						|
 | 
						|
		</tr>
 | 
						|
	</thead>
 | 
						|
	<tfoot>
 | 
						|
		<tr>
 | 
						|
			<th>Name</th>
 | 
						|
			<th>Major</th>
 | 
						|
			<th>Sex</th>
 | 
						|
			<th>English</th>
 | 
						|
			<th>Japanese</th>
 | 
						|
			<th>Calculus</th>
 | 
						|
			<th>Geometry</th>
 | 
						|
 | 
						|
		</tr>
 | 
						|
	</tfoot>
 | 
						|
	<tbody>
 | 
						|
		<tr>
 | 
						|
			<td>Student01</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
 | 
						|
			<td>80</td>
 | 
						|
			<td>70</td>
 | 
						|
			<td>75</td>
 | 
						|
			<td>80</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student02</td>
 | 
						|
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>90</td>
 | 
						|
			<td>88</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student03</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
			<td>85</td>
 | 
						|
			<td>95</td>
 | 
						|
 | 
						|
			<td>80</td>
 | 
						|
			<td>85</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student04</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
 | 
						|
			<td>60</td>
 | 
						|
			<td>55</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>100</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student05</td>
 | 
						|
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
			<td>68</td>
 | 
						|
			<td>80</td>
 | 
						|
			<td>95</td>
 | 
						|
			<td>80</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student06</td>
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>99</td>
 | 
						|
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student07</td>
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
 | 
						|
			<td>85</td>
 | 
						|
			<td>68</td>
 | 
						|
			<td>90</td>
 | 
						|
			<td>90</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student08</td>
 | 
						|
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
			<td>90</td>
 | 
						|
			<td>85</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student09</td>
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>80</td>
 | 
						|
			<td>50</td>
 | 
						|
 | 
						|
			<td>65</td>
 | 
						|
			<td>75</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student10</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
 | 
						|
			<td>85</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student11</td>
 | 
						|
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>86</td>
 | 
						|
			<td>85</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>100</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student12</td>
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>female</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>75</td>
 | 
						|
 | 
						|
			<td>70</td>
 | 
						|
			<td>85</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student13</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
 | 
						|
			<td>100</td>
 | 
						|
			<td>80</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student14</td>
 | 
						|
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
			<td>50</td>
 | 
						|
			<td>45</td>
 | 
						|
			<td>55</td>
 | 
						|
			<td>90</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student15</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>95</td>
 | 
						|
			<td>35</td>
 | 
						|
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student16</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
 | 
						|
			<td>100</td>
 | 
						|
			<td>50</td>
 | 
						|
			<td>30</td>
 | 
						|
			<td>70</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student17</td>
 | 
						|
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
			<td>80</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>55</td>
 | 
						|
			<td>65</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student18</td>
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>30</td>
 | 
						|
			<td>49</td>
 | 
						|
 | 
						|
			<td>55</td>
 | 
						|
			<td>75</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student19</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
 | 
						|
			<td>68</td>
 | 
						|
			<td>90</td>
 | 
						|
			<td>88</td>
 | 
						|
			<td>70</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student20</td>
 | 
						|
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>40</td>
 | 
						|
			<td>45</td>
 | 
						|
			<td>40</td>
 | 
						|
			<td>80</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student21</td>
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>male</td>
 | 
						|
			<td>50</td>
 | 
						|
			<td>45</td>
 | 
						|
 | 
						|
			<td>100</td>
 | 
						|
			<td>100</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student22</td>
 | 
						|
			<td>Mathematics</td>
 | 
						|
			<td>male</td>
 | 
						|
 | 
						|
			<td>100</td>
 | 
						|
			<td>99</td>
 | 
						|
			<td>100</td>
 | 
						|
			<td>90</td>
 | 
						|
		</tr>
 | 
						|
		<tr>
 | 
						|
			<td>Student23</td>
 | 
						|
 | 
						|
			<td>Languages</td>
 | 
						|
			<td>female</td>
 | 
						|
			<td>85</td>
 | 
						|
			<td>80</td>
 | 
						|
			<td>80</td>
 | 
						|
			<td>80</td>
 | 
						|
 | 
						|
		</tr>
 | 
						|
	</tbody>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
 | 
						|
<script type="text/javascript">
 | 
						|
_uacct = "UA-2189649-2";
 | 
						|
urchinTracker();
 | 
						|
</script>
 | 
						|
</body>
 | 
						|
</html>
 | 
						|
 |