Javascript jQuery排序自定义表
我正在使用一个小的用户脚本对一个表进行排序,但是表的结构非常奇怪。我想做的是添加一个额外的排序功能,这样我就可以根据人员的排名进行排序 表数据如下所示:Javascript jQuery排序自定义表,javascript,jquery,html,sorting,Javascript,Jquery,Html,Sorting,我正在使用一个小的用户脚本对一个表进行排序,但是表的结构非常奇怪。我想做的是添加一个额外的排序功能,这样我就可以根据人员的排名进行排序 表数据如下所示: <table id="outer"> <tr> <td><div id="bgn"></div></td> <td><a href="#">User 1</a></td>
<table id="outer">
<tr>
<td><div id="bgn"></div></td>
<td><a href="#">User 1</a></td>
<td>
<table id="inner">
<tbody>
<tr>
<td>Rank</td>
<td id="tdp">#28</td>
</tr>
</tbody>
</table>
</td>
</tr>
<!-- more rows -->
</table>
控制台中的输出是一个包含所有排名的正确排序数组,我只是不知道如何交换相应的,以便表get以正确的方式重建。寻找任何提示或指针 这个建议实际上不是对行进行排序,而是用已排序的行重新构造表。但这应该起到作用:
rankings = rankings.sort(sortNumber);
var table = $('<table></table>');
for (var i = 0; i < rankings.length; i++) {
var row = $('tr').filter(function() {
var rank = $(this).find('#tdp').text();
return rank.substring(1, rank.length) == i;
});
table.append(row);
}
$('#originalTable').html(table.html());
您是否尝试过这样做:HTML看起来无效,href属性未关闭,并且看起来您多次使用相同的ID,并且ID是唯一的。从有效的HTML开始,事情就会变得简单。此外,sort直接在jQuery集合上工作,不需要推送到数组,但是您已经以正确的顺序将表追加回DOM中以查看任何更改。虽然可以通过迭代所有DOM元素并在元素中实际移动它们来解决问题,但这是一个坏主意。移动DOM元素意味着首先将其从DOM中移除,然后将其插入其他位置。DOM操作是一个非常昂贵的操作,实际上您不需要在页面上看到中间状态。正如约翰和阿德内奥都提到的,有一个更好的方法。
rankings = rankings.sort(sortNumber);
var table = $('<table></table>');
for (var i = 0; i < rankings.length; i++) {
var row = $('tr').filter(function() {
var rank = $(this).find('#tdp').text();
return rank.substring(1, rank.length) == i;
});
table.append(row);
}
$('#originalTable').html(table.html());