我有一个与这个问题非常相似的问题:jQuery table sort
单击日期标题时,我想根据日期对表格行进行排序,而不是基于文本。
我的代码基于这个 jsFiddle http://jsfiddle.net/gFzCk/,它是上述问题的答案之一,它确实进行了排序,但它将日期视为普通文本,而不是日期。
通常我可以修改原始代码以满足我的需要,但这个代码只是有点超出我的能力。
这是我的 jsFiddle http://jsfiddle.net/S6dM6/
HTML
<table>
<tr>
<th id="dateHeader">Date</th>
<th>Phone #</th>
<th id="city_header">City</th>
<th>Speciality</th>
</tr>
<tr>
<td>01/02/2013</td>
<td>00001111</td>
<td>Amsterdam</td>
<td>GGG</td>
</tr>
<tr>
<td>24/02/2013</td>
<td>55544444</td>
<td>London</td>
<td>MMM</td>
</tr>
<tr>
<td>28/02/2013</td>
<td>33332222</td>
<td>France</td>
<td>RRR</td>
</tr>
<tr>
<td>13/02/2013</td>
<td>88884444</td>
<td>Auckland</td>
<td>AA</td>
</tr>
<tr>
<td>04/02/2013</td>
<td>11115555</td>
<td>New York</td>
<td>BBB</td>
</tr>
</table>
JS
var table = $('table');
$('#dateHeader')
.wrapInner('<span title="sort this column"/>')
.each(function(){
var th = $(this),
thIndex = th.index(),
inverse = false;
th.click(function(){
table.find('td').filter(function(){
return $(this).index() === thIndex;
}).sortElements(function(a, b){
return $.text([a]) > $.text([b]) ?
inverse ? -1 : 1
: inverse ? 1 : -1;
}, function(){
// parentNode is the element we want to move
return this.parentNode;
});
inverse = !inverse;
});
});
并且引用了这个js文件: https ://raw.github.com/padolsey/jQuery-Plugins/master/sortElements/jquery.sortElements.js
以防万一您要建议某种表格排序插件,请注意单击标题时我的最终结果不会排序,排序函数将从我的javascript中的各个位置调用,我只是使用此单击示例作为使概念发挥作用的简单起点,并作为提出此问题的简单方法。