簡體   English   中英

jQuery排序自定義表

[英]jQuery sort custom table

我正在使用一個小的用戶腳本來對表進行排序,但是表的結構確實很奇怪。 我想做的是添加一個額外的排序功能,以便我可以對人員的排名(#)進行排序。

表數據如下所示:

<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>

還有一些其他的<td> ,但它們現在並不重要。 大約有52行,但是這些行當然可以有所不同。

我有當前的jQuery代碼:

jQuery( document ).ready(function() {
    var rankings = [];

    $(document).on('click', '#tdr', function() {
    // skipping first line because it's the header

    $('tr:not(:first-child').each(function () {
        var rank = $(this).find('#tdp').text();
        var rank2 = rank.substring(1, rank.length)
        rankings.push(rank2);
    });

        console.log(rankings.sort(sortNumber));
    });

    function sortNumber(num1, num2) {
        return num1 - num2;
    }
});

JS Bin示例

控制台中的輸出是具有所有排名的正確排序數組,我只是不知道如何也交換相應的<tr> ,以便表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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM