如果有类,jQuery Tablesorter不对列进行排序

时间:2011-10-12 16:04:49

标签: jquery tablesorter

我目前使用以下命令告诉我的表不使用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>

由于

4 个答案:

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