用多个tbody对表进行排序?

时间:2011-08-08 08:46:37

标签: jquery-ui-sortable

我的表结构如下。现在我需要分别对这些嵌套表进行排序。例如:排序章节的行只会在单独的表中更新章节顺序。然而,排序项目将在另一个表格中更新他们的订单。

我设法设置代码和排序。但是,当我从第4章拖动项目时,它会传递第1章中项目的顺序,因为它们来自第4章???

有人可以帮我分类相关的项目吗?

注意:此列表来自数据库。所以我对一个覆盖所有排序位的jquery代码感兴趣。

        <table id=subsortsortable>
        <tbody class=content>
            <tr id="chapter_1"><td>Chapter one</td></tr>
            <tr id="chapter_2"><td>Chapter two</td></tr>
            <tr id="chapter_3">
                <td>
                    <table>
                        <tbody class=subcontent>
                            <tr id="item_31"><td>three.one</td></tr>
                            <tr id="item_32"><td>three.two</td></tr>
                        </tbody>
                    </table>
                </td>
            </tr>
            <tr id="chapter_4">
                <td>
                    <table>
                        <tbody class=subcontent>
                            <tr id="item_41"><td>four.one</td></tr>
                            <tr id="item_42"><td>four.two</td></tr>
                            <tr id="item_43"><td>four.three</td></tr>
                            <tr id="item_44"><td>four.four</td></tr>
                            <tr id="item_45"><td>four.five</td></tr>
                        </tbody>
                    </table>
                </td>
            </tr>
            <tr id="chapter_4"><td>Chapter Four</td></tr>
        </tbody>
    </table>

我使用的代码如下:

//for sorting chapters - which is outer table
$("#subsortable tbody.content").sortable({      
        opacity: 0.7, 
        cursor: 'move', 
        placeholder: "ui-state-highlight",
        forcePlaceholderSize: true,
        update: function(){
            var order = $('#subsortable tbody.content').sortable('serialize') + '&action=updateChaptersOrder';
            $.post("/admin/ajax/ajax_calls.php", order, function(theResponse){
            });

        }

    });

// For sorting and updating items within a specific chapter - which is nested tbody
$("tbody.sortItems").subcontent({

        opacity: 0.7, 
        cursor: 'move', 
        placeholder: "ui-state-highlight",
        forcePlaceholderSize: true,
        update: function(){
            var order = $('tbody.subcontent').sortable('serialize');// + '&action=updateListings';
            $.post("/admin/ajax/ajax_calls.php", order, function(theResponse){
            });

        }

    });

1 个答案:

答案 0 :(得分:1)

我已经得到了自己问题的答案。万一其他人遇到同样的问题。我在内部表中更改了以下代码:

var order = $('tbody.subcontent').sortable('serialize'); 

var order = $(this).sortable('serialize');