我希望在页面加载时按字母顺序对html表进行排序,就像对无序列表进行排序一样。
我尝试使用下面的代码但不起作用:
var mylist = $('#myTable');
var listitems = mylist.children('tr').get();
listitems.sort(function(a, b) {
return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });
然后
<table id="myTable">
<tr>
<td>B</td>
<td>12/01/2016</td>
</tr>
<tr>
<td>A</td>
<td>12/01/2016</td>
</tr>
</table>
我希望它按行的第一列按字母顺序对表进行排序。
我在网上找不到任何相关内容。
答案 0 :(得分:4)
你的问题是这行没有归还你的:
var listitems = mylist.children('tr').get();
修改为以下内容,一切正常。
var listitems = mylist.find('tr');
var mylist = $('#myTable');
var listitems = mylist.find('tr');
listitems.sort(function(a, b) {
return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="myTable">
<tr>
<td>B</td>
<td>12/01/2016</td>
</tr>
<tr>
<td>A</td>
<td>12/01/2016</td>
</tr>
</table>
答案 1 :(得分:1)
这是我使用的代码段。注意:这比使用jquery find()
更快
function sortTable(){
var table = document.getElementById("myTable");
var Arr = [];
for(var i=0, ln=table.rows.length; i<ln; i++){
var row = table.rows[i];
var firstCell = row.cells[0].textContent;
Arr.push([firstCell, row]); //temporary array
}
//sort by first column of inner arrays
Arr = Arr.sort(function(a,b) {
return a[0] > b[0];
});
for(var i=0, ln=Arr.length; i<ln; i++){
table.appendChild(Arr[i][1]);
}
Arr = null;
}
sortTable();
<table id="myTable">
<tr>
<td>d</td>
<td>12/03/2016</td>
</tr>
<tr>
<td>B</td>
<td>12/01/2016</td>
</tr>
<tr>
<td>A</td>
<td>12/04/2016</td>
</tr>
<tr>
<td>C</td>
<td>12/04/2016</td>
</tr>
</table>