【发布时间】:2021-05-28 22:13:40
【问题描述】:
我有一个 html 表格,如下所示:
<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>
我正在尝试使用 jquery 对表格进行排序,以便它们以正确的月/日顺序显示。即:
February 4
February 7
February 21
March 1
March 9
我有一系列月份:
var months = ['','January','February','March','April','May','June','July','August','September','October','November','December'];
我尝试使用以下命令订购表格:
// 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);
})
但这并没有奏效。我明白了:
March 1
February 4
February 7
March 9
February 21
我如何才能正确订购它们?
谢谢
【问题讨论】: