0

html JS FIDDLE 在这里 查看第一个示例主页、脚本、片段。如果 Script Parent 是 1 它应该在 home tr 下,如果 Snippet parent id 是 6 它在 Script 菜单下

<table id="sort-table">
    <tbody>
        <tr>
            <th>Id</th>
            <th>Parent</th>
            <th>Title</th>
        </tr>
        <tr>
            <td>1</td>
            <td>0</td>
            <td>home</td>
        </tr>
        <tr>
            <td>2</td>
            <td>0</td>
            <td>Code</td>
        </tr>
        <tr>
            <td>3</td>
            <td>0</td>
            <td>Contact</td>
        </tr>
        <tr>
            <td>4</td>
            <td>10</td>
            <td>PHP</td>
        </tr>
        <tr>
            <td>5</td>
            <td>2</td>
            <td>CSS</td>
        </tr>
        <tr>
            <td>6</td>
            <td>1</td>
            <td>Scripts</td>
        </tr>
        <tr>
            <td>8</td>
            <td>4</td>
            <td>Archive</td>
        </tr>
        <tr>
            <td>9</td>
            <td>6</td>
            <td>Snippet</td>
        </tr>
        <tr>
            <td>10</td>
            <td>0</td>
            <td>samitha</td>
        </tr>
        <tr>
            <td>7</td>
            <td>4</td>
            <td>help</td>
        </tr>
    </tbody>
</table>
<span></span>

<br>
<button class="sort-table asc">sort</button>

jQuery

 $('.sort-table').click(function (e) {


        var table = $("table tbody");

        table.find('tr').each(function () {
            var $tds = $(this).find('td'),
                id = $tds.eq(0).text(),
                parent = $tds.eq(1).text(),
                title = $tds.eq(2).text();

            if (parent === 0) {




            }

        });

    });

输出

Id  Parent  Title
1   0       home
2   0       Code
3   0       Contact
4   10      PHP
5   2       CSS
6   1       Scripts
8   4       Archive
9   6       Snippet
10  0       samitha
7   4       help

我想像下面这样排序

第二张桌子

   Id   Parent  Title
    1   0       home
    6   1       Scripts
    9   6       Snippet
    2   0       Code
    5   2       CSS
    3   0       Contact
    10  0       samitha
    4   10      PHP
    8   4       Archive
    7   4       help

我想如果父 ID 是菜单的 ID,它需要像第二张桌子上面那样排序。我做了一些事情,我需要继续这样做吗?

4

1 回答 1

3

由于没有明显的系统可供排序,我想你必须自己定义一些东西:

$('.sort-table').click(function (e) {
    var sort  = [1,6,9,2,5,3,10,4,8,7],
        table = $("table tbody"),
        tr    = table.find('tr');

    $.each(sort, function(_,index) {
        tr.filter(function() {
            return parseInt($('td:first', this).text(), 10) == index;
        }).appendTo(table);
    });
});

小提琴

编辑:

我想也许我明白了,但我可能不明白?
如果您尝试在当前 TR 等中具有给定父元素 ID 的 TR 元素之后添加每个 TR 元素...... ???

无论如何,试试这个:

$('.sort-table').click(function (e) {
    var table = $("table tbody"),
        tr    = table.find('tr');

    $.each(tr, function(_,el) {
        var par = parseInt($(el).find('td').eq(1).text(), 10);
        if (par !== 0) {
            var par_el = tr.find('td:first').filter(function() {
                return parseInt($(this).text(),10) == par;
            }).closest('tr');
            par_el.after(el);
        }
    });
});

小提琴

于 2013-06-17T15:37:51.523 回答