5

这是我的自定义解析器:

$.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

这是我设置表格排序器并添加自定义排序解析器的代码:

$(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>
4

1 回答 1

3

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

工作小提琴

 $("#dataTable").tablesorter({
     sortList: [[0,0]],   
     headers: {
            0: {
                sorter: 'customParser'
            }
        }
    });
于 2013-10-04T12:09:53.500 回答