使用Javascript按行对HTML表数据排序
问题 给定以下使用Javascript按行对HTML表数据排序,javascript,jquery,html,sorting,Javascript,Jquery,Html,Sorting,问题 给定以下HTML表格 <table id="sort-table"> <tbody> <tr> <td>text*1234</td> <td>data</td> </tr> <tr> <td>text*1224</td>
HTML
表格
<table id="sort-table">
<tbody>
<tr>
<td>text*1234</td>
<td>data</td>
</tr>
<tr>
<td>text*1224</td>
<td>data</td>
</tr>
<tr>
<td>text*1254</td>
<td>data</td>
</tr>
<tr>
<td>texta*1234</td>
<td>data</td>
</tr>
<tr>
<td>textabc*1234</td>
<td>data</td>
</tr>
<tr>
<td>textab*1234</td>
<td>data</td>
</tr>
<tr>
<td>*2234</td>
<td>data</td>
</tr>
<tr>
<td>textabcd*1234</td>
<td>data</td>
</tr>
<tr>
<td>text*1234</td>
<td>data</td>
</tr>
<tr>
<td>textabc*1234*1234</td>
<td>data</td>
</tr>
</tbody>
</table>
下面是一个显示当前工作方式的示例您可以使用该方法按所需顺序组织行:
$('#sort-table tr').sort(function(a, b) {
var aText = $(a).find('td:eq(0)').text();
var bText = $(b).find('td:eq(0)').text();
if (aText > bText)
return 1;
else if (aText < bText)
return -1;
return 0;
}).appendTo('#sort-table');
$('#sort table tr').sort(函数(a,b){
var-aText=$(a).find('td:eq(0)').text();
var bText=$(b).find('td:eq(0)').text();
如果(aText>bText)
返回1;
else if(aText
排序函数有点错误,请参见:@MinusFour,因此
.sort()
方法可能会在过时的浏览器中执行一些奇怪的操作,但现代浏览器可以,对吗?可以肯定的是,输入camparison函数的行为似乎没有任何错误。@languidQuid否,它是关于使用3个不同的值(1,0,-1)对数组进行排序。当您执行时,返回a>b代码>返回true或false,1或0。注意:它不是真正的1和-1。肯定和否定更准确。我相信我明白你现在所说的。传入的比较函数返回与(1
、0
或-1
)值相对应的(true
或false
)值。这可能会导致一些不可靠的行为?虽然它适用于我提供的测试数据,但可能需要进行一些修改,然后才能在荒野中释放。@four您是对的,sort()
的这种实现并不是严格意义上的最佳实践-尽管由于Javascript松散的数据类型,它可以很好地工作。我会修改的。
$('#sort-table tr').sort(function(a, b) {
var aText = $(a).find('td:eq(0)').text();
var bText = $(b).find('td:eq(0)').text();
if (aText > bText)
return 1;
else if (aText < bText)
return -1;
return 0;
}).appendTo('#sort-table');