我正在使用下面的函数对HTML表进行排序,这些函数可以完美地根据用户点击的<td>
列中的<th>
值对表进行排序。再次单击该列,排序将反转。
$('th').click(function(){
var table = $(this).parents('table').eq(0);
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
this.asc = !this.asc;
if (!this.asc){ rows = rows.reverse(); }
for (var i = 0; i < rows.length; i++){
table.append(rows[i]); }
})
function comparer(index) {
return function(a, b) {
var valA = getCellValue(a, index), valB = getCellValue(b, index);
return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB);
}
}
function getCellValue(row, index){
return $(row).children('td').eq(index).html(); }
我现在正在尝试进行&#34;子排序&#34;使用表中的其他列<td>
值进一步对表进行排序,以便在表的初始列中找到匹配的<td>
值。
因此,例如,如果表中的3个行在选择用于对表进行排序的列中都具有匹配值。我想使用辅助列来根据辅助列<td>
值进一步对这些行进行排序。我打算在列具有匹配值时预先定义要用作辅助排序的列。
我知道有很多插件可用于执行此任务,但我真的试图避免使用类似的东西来完成像排序表这样简单的事情。最初我使用上面提供的函数相当快地解决了这个问题,但是现在有了添加另一个列进行排序的问题,我完全不知道如何处理这个问题。
非常感谢任何帮助。