I have a html table that is made as follows:
<table border="1" id="table">
<tbody>
<tr>
<th>Month</th>
<th>Day</th>
</tr>
<tr>
<td>March</td>
<td>1</td>
</tr>
<tr>
<td>February</td>
<td>21</td>
</tr>
<tr>
<td>February</td>
<td>7</td>
</tr>
<tr>
<td>March</td>
<td>9</td>
</tr>
<tr>
<td>February</td>
<td>4</td>
</tr>
</tbody>
</table>
I'm trying to use jquery to sort the table so they will appear in the correct Month / Day order. ie:
February 4
February 7
February 21
March 1
March 9
I've got an array of months:
var months = ['','January','February','March','April','May','June','July','August','September','October','November','December'];
and I've tried ordering the table using:
// Order by Month
var $table=$('#table');
var rows = $table.find('tr').get();
rows.sort(function(a, b) {
var keyA = $.inArray( $(a).find('td:eq(0)').text(), months)
var keyB = $.inArray( $(b).find('td:eq(0)').text(), months);
if ( keyA.length < 2 ) keyA = "0" + keyA
if ( keyB.length < 2 ) keyB = "0" + keyB
console.log ( keyA + ' ' + keyB )
if (!keyA || !keyB) return -1;
if (keyA > keyB) return 1;
if (keyA < keyB) return -1;
return 0;
});
// order by day
rows.sort(function(a, b) {
var keyA = $(a).find('td:eq(1)').text();
var keyB = $(b).find('td:eq(1)').text();
if ( keyA.length < 2 ) keyA = "0" + keyA
if ( keyB.length < 2 ) keyB = "0" + keyB
console.log ( keyA + ' ' + keyB )
if (!keyA || !keyB) return -1;
if (keyA > keyB) return 1;
if (keyA < keyB) return -1;
return 0;
});
$.each(rows, function(index, row) {
$table.children('tbody').append(row);
})
But that hasn't worked. I get:
March 1
February 4
February 7
March 9
February 21
How do I get this to order them correctly ?
Thanks