Chris Chris - 1 year ago 76
jQuery Question

Using jquery, how do you reorder rows in a table based on a TR attribute?

I have a table with rows similar to the following. These rows get updated from time to time via jquery calls. Using jquery, how would I construct a function that reorders these table rows based on the myAttribute value putting the highest myAttribute value rows at the top and the lowest myAttribute value rows at the bottom? There could be up to 100 rows in the table.

<tr id='1' class='playerRow' myAttribute=5>
<td> One</td>
<td> Two</td>
<tr id='2' class='playerRow' myAttribute=6>
<td> One</td>
<td> Two</td>

Kai Kai
Answer Source
<tr id='1' class='playerRow' myAttribute='1'>
      <td> One1</td>
      <td> Two1</td>
<tr id='2' class='playerRow' myAttribute='2'>
      <td> One2</td>
      <td> Two2</td>


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) {

Working Demo is

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download