编码多州排序还是多列?

时间:2015-04-16 22:55:09

标签: jquery css tablesorter

第一次发布到stackoverflow!

非常喜欢tablesorter及其灵活性。谢谢!

我有一个编码名称,希望在不显示任何地方的情况下对姓氏进行排序。 我目前使用两个列,代号(first_name last initial)和第二个(姓氏)上没有标签。 这是我的标题行:

<th>Participant</th>
<th class='sorter-sortlast' title='Last Name'>&nbsp;</th>

以下是一些数据:

<tr>
  <td>BobF</td>
  <td sort_code='001022'></td>
</tr>
<tr>
  <td>GeorgeB</td>
  <td sort_code='001007'></td>
</tr>

和我的解析器

  $.tablesorter.addParser({
    id: 'sortlast',
    is: function(s, table, cell, $cell) {
      return false;
    },
    format: function(s, table, cell, cellIndex) {
      return cell.getAttribute('sort_code'); //s;
    },
    parsed: true,
    type: 'numeric'
  });

问题: 我怎样才能改进这一点,以便我

  1. 只有一列并多次点击,或
  2. 有两列,并将它们挤在一起,以便姓氏列看起来像参与者列的一部分?
  3. 疑惑:

    1. 我看到一些代码可以捕获标题点击并根据现有类更改内容,这里: how to get current sort order from tablesorter plugin? 这可能是一个解决方案。它改变了类,即headerSortDown。我可以更改标题文本以指示它现在按姓氏排序。难以转换 - 点击多种 - 或者是吗?! sort_code将移至第一列,第二列将消失。

    2. 如果我要做这个css方法,我该如何更改列的宽度,特别是第二列(姓氏)并隐藏两列之间的分隔符?我尝试添加一个类(.hideLeftBorder,.hideRightBorder)来做到这一点,但没有。我通过将css直接放入th和td:style ='border-right-width:0;'来强制它。 这看起来没问题,除了过多的填充。 (我在哪里删除它,请,顺便说一下?)

    3. 感谢您的考虑!

1 个答案:

答案 0 :(得分:0)

您似乎正在使用此fork of tablesorter,所以幸运的是已经有一些示例。

在上述两种情况下,都不需要隐藏列。所有数据都可以进入一个单元格。

此外,您发现捕获标题点击的代码是为原始tablesorter编写的,因为类名已完全更改;无论如何,使用sortList值来计算排序方向会更有效。

最后,这与上述答案无关,但我不建议添加像sort_code这样的表格单元属性,而是使用HTML5数据属性(例如data-sort-code)。