使用带有子排序的Jquery对表进行排序以匹配值

时间:2014-03-30 23:33:42

标签: javascript jquery html sorting html-table

我正在使用下面的函数对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>值进一步对这些行进行排序。我打算在列具有匹配值时预先定义要用作辅助排序的列。

我知道有很多插件可用于执行此任务,但我真的试图避免使用类似的东西来完成像排序表这样简单的事情。最初我使用上面提供的函数相当快地解决了这个问题,但是现在有了添加另一个列进行排序的问题,我完全不知道如何处理这个问题。

非常感谢任何帮助。

0 个答案:

没有答案