我正在尝试订购一个预先计算好的序列表。
所以在下面的例子中,5项将被移动到第一项,然后第三项将是第二项,依此类推。
我似乎无法操纵sort
来实现此目的,是否可以使用sort
?
var seq = [5, 3, 2, 1, 4];
var table = $('.table');
var rows = $('tbody > tr', table);
rows.sort( function(a, b){
return 0;
});
rows.each(function(index, row){
table.append(row);
});
答案 0 :(得分:1)
不要使用sort
,只需遍历seq
数组,收集行:
$("#button").click(function() {
var seq = [5, 3, 2, 1, 4];
var table = $('table');
var rows = $('tbody > tr', table);
var new_rows = [];
$.each(seq, function() {
new_rows.push(rows.eq(this - 1)); // subtract 1 because `eq()` is 0-based
});
$.each(new_rows, function() {
table.append(this);
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>a</td>
</tr>
<tr>
<td>b</td>
</tr>
<tr>
<td>c</td>
</tr>
<tr>
<td>d</td>
</tr>
<tr>
<td>e</td>
</tr>
</table>
<button id="button">Click to reorder</button>
&#13;