jQuery - TableSorter自定义解析器无法正常工作

时间:2013-10-04 12:05:26

标签: jquery tablesorter

这是我的自定义解析器:

$.tablesorter.addParser({
    id: "customParser",
    is: function (stringValue) {
        return false;
    },
    format: function (stringValue) {
        var stringValueParts = stringValue.split("-");
        var numericPartOfStringValue = parseInt(stringValueParts[2]);
        return numericPartOfStringValue ;
    },
    type: 'numeric'
});

stringValue将具有以下值:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000

以下是我设置tablesorter并添加自定义排序解析器的代码:

$(function() {
    $("#dataTable").tablesorter({
        headers: {
            3: {
                sorter: 'customParser'
            }
        }
    });
});

我确实添加了一个console.log(numericPartOfStringValue),并且所有数字都被写入控制台,所以看起来解析器正在做它应该做的事情。

那么我想要发生什么?

我希望我的值在字符串的数字部分排序,如下所示:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000

实际发生了什么?

以这种方式对值进行排序:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-1000
  • ABC-DE-101

我还尝试了什么?

我在html中添加了以下内容,但它没有什么区别:

<th class="{sorter: 'CustomParser'}">
    String Value Column
</th>

最后:

以下是表格单元格中的示例值:

<td>
    <span class="badge">ABC-DE-1</span>
</td>

1 个答案:

答案 0 :(得分:3)

它的工作原理,你只需要设置默认的排序顺序。我使用了sortList.,它是一个元组数组,包含th索引和顺序(asc = 0,desc = 1)。

工作fiddle

 $("#dataTable").tablesorter({
     sortList: [[0,0]],   
     headers: {
            0: {
                sorter: 'customParser'
            }
        }
    });