每次单击一个新列时,使jQuery表分类器按升序排序

时间:2011-10-10 09:08:16

标签: jquery jquery-plugins

我想问一下,每次点击一个新列时,是否有办法让表格分类器按升序排序?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您希望列只按其初始排序方向排序,请在jquery.tablesorter.js中查找并注释掉该行:

this.order = this.count++ % 2;

这是更新列的行,以便在下次单击标题时以相反方向排序。对此进行注释意味着排序顺序始终相同。但这也意味着你无法向相反的方向排序。

我有一种情况(可能与你描述的相同)我想让每一列在我第一次点击时按照初始排序方向进行排序,但仍希望能够在我再次点击时对另一个方向进行排序。例如。单击列A将对ASC进行排序,然后再次单击将对DESC进行排序,然后再次对ASC进行排序。单击B将对ASC进行排序,然后再次单击A将对ASC进行排序。使用原始的tablesorter代码,最后一次排序将是DESC,因为前一次单击的A列是ASC。

以下是我解决这个问题的方法。它可能是笨拙和笨拙的,但它对我有用。

在buildHeaders函数中,找到以下行:

this.order = formatSortingOrder( checkHeaderOrder(table, index) );

并在其后添加:

this.initialOrder = formatSortingOrder( checkHeaderOrder(table, index) );

替换我之前提到的那条线:

this.order = this.count++ % 2;

有了这个:

if($lastColumn == i){
    this.order = ++this.count % 2;
}else{
    this.order = this.initialOrder;
}
$lastColumn = i;

现在,比较A列的sortInitialOrder是ASC而B是DESC。将发生以下情况:

  1. 单击A:排序ASC
  2. 单击B:排序B DESC
  3. 单击B:排序B ASC
  4. 单击A:排序ASC

答案 1 :(得分:1)

这是一个tablesorter的分支,你可以传递一个lockedOrder参数:http://mottie.github.io/tablesorter/docs/example-options-headers-locked.html