我目前使用以下命令告诉我的表不使用jquery Tablesorter插件对某些列进行排序:
$(".uiGridContent table").tablesorter({
sortList: [[1, 0]],
headers: {
0: { sorter: false },
5: { sorter: false },
6: { sorter: false }
}
});
问题是,在我的应用程序中,用户可以添加和删除列,因此订单可以更改,因此我当前的代码不是一个可行的解决方案。如果我在列上放一个课我不想排序,例如<col class="nosort" />
我怎么能这样做,所以不对这些列进行排序?
因为我正在使用<col />
,所以我尝试了以下内容:
$filter_ignore = $("col.nosort").closest("th").index();
$(".uiGridContent table").tablesorter({
sortList: [[1, 0]],
headers: {
$filter_ignore: {
sorter: false
}
}
});
但不起作用:/
我想我需要某种循环来找到所有这些带有一个列的它们与clase!这是我的表的一个例子:
<table>
<colgroup>
<col class="nosort" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">a</th>
<th scope="col">b</th>
</tr>
</thead>
<tbody>
<tr>
<td scope="col">a</td>
<td scope="col">b</td>
</tr>
</tbody>
</table>
由于
答案 0 :(得分:11)
function setupTablesorter() {
$('table.tablesorter').each(function (i, e) {
var myHeaders = {}
$(this).find('th.nosort').each(function (i, e) {
myHeaders[$(this).index()] = { sorter: false };
});
$(this).tablesorter({ widgets: ['zebra'], headers: myHeaders });
});
}
这似乎效果最好!
答案 1 :(得分:2)
我实际上有一个tablesorter的分支,允许您将sorter-false
类添加到表头以防止排序。您也可以使用此方法设置解析器(例如sorter-currency
等)。这是the demo that uses class names。
答案 2 :(得分:1)
根据documentation,您现在可以使用class="sorter-false"
答案 3 :(得分:0)
Afaik <col class="nosort" />
不会将该类添加到其范围内的cols中,我不知道如何将所有colls置于colgroup下或者甚至可能。但是,如果您要将类添加到th,那么很容易对其进行排序。
var $filter_ignore = {};
$("th.nosort").each(function(i) {
$filter_ignore[i] = {sorter: false};
});
$("table").tablesorter({
sortList: [[1, 0]],
headers: $filter_ignore
});
使用此标记
<table>
<colgroup>
<col class="nosort" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col" class="nosort">a</th>
<th scope="col">b</th>
</tr>
</thead>
<tbody>
<tr>
<td scope="col">a</td>
<td scope="col">b</td>
</tr>
</tbody>
</table>