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());