jQuery可排序的包含问题

时间:2012-08-10 14:13:14

标签: jquery jquery-ui-sortable containment

期望的效果:使用jQuery.sortable从包含中排除类do-not-sort的行(tr)。

当前代码: (遏制:'父'/遏制:'。ortable-body')

<table>
    <thead>
        <tr>
            <th>Field 1</th>
            <th>Field 2</th>
        </tr>
    </thead>
    <tbody class="sortable-body">
        <tr>
            <td>Sortable Field 1</td>
            <td>Sortable Field 2</td>
        </tr>
        <tr>
            <td>Sortable Field 1</td>
            <td>Sortable Field 2</td>
        </tr>
        <tr class="do-not-sort">
            <td colspan="2"><a href="#">Add Row</a></td>
        </tr>
    </tbody>
</table>

如何从收容中排除tbody末尾(!)的'do-not-sort'行?以下不起作用:

  

遏制:'.sortable-body tr:not(.menu-rij-toevoegen)'

2 个答案:

答案 0 :(得分:1)

您可以使用'items'参数识别 可排序的项目 - 该值应指定为CSS选择器。

因此,要提供否定条件(从组中排除元素),请使用:not()伪类,如下所示:

$('.sortable-body').sortable({ items: 'tr:not(.do-not-sort)' })​;​

它可以在这里使用您的精确标记:http://jsfiddle.net/MUEuW/2/

更新:从包含中排除最后一行的最佳方法可能就是将其包装在单独的<tbody>标记中。

多个<tbody>是合法的。请参阅:Can we have multiple <tbody> in same <table>?

此处更新了小提琴:http://jsfiddle.net/MUEuW/3/

...或者您无法控制HTML?

答案 1 :(得分:-1)

看看我之前的帖子。 https://stackoverflow.com/a/9535584/665387

您可以指定不可排序的列,例如

$('#tableRoster').tablesorter({
        headers: {
            0: { sorter: false },
            4: { sorter: false }
        }
    });