使用jquery,如何根据TR属性重新排序表中的行?

我有一个表格,行的行类似于以下内容。 这些行通过jquery调用不时更新。 使用jquery,我如何根据myAttribute值构造一个重新排序这些表行的函数,将最高的myAttribute值行放在顶部,将myAttribute值最低的行放在底部? 表中最多可以有100行。

  One  Two    One  Two  

 
One1 Two1
One2 Two2

JQuery的

 var $table=$('table'); var rows = $table.find('tr').get(); rows.sort(function(a, b) { var keyA = $(a).attr('myAttribute'); var keyB = $(b).attr('myAttribute'); if (keyA < keyB) return 1; if (keyA > keyB) return -1; return 0; }); $.each(rows, function(index, row) { $table.children('tbody').append(row); }); 

工作演示是http://www.jsfiddle.net/HELUq/1/

谢谢,凯。 我在保持清晰度的同时提炼了一些代码。 通常,您不希望对theadtfooter部件进行排序。 因此,仅仅定位tbody

元素可能很方便(尽管这不是Chris的原始问题):

  var tb = $('tbody'); var rows = tb.find('tr'); rows.sort(function(a, b) { var keyA = $(a).attr('myAttribute'); var keyB = $(b).attr('myAttribute'); return keyA - keyB; }); $.each(rows, function(index, row) { tb.append(row); }); 

要按降序排序,只需按如下方式反转返回行:

  return keyB - keyA;