【问题标题】:jQuery - TableSorter custom parser not workingjQuery - TableSorter 自定义解析器不起作用
【发布时间】:2013-10-04 20:21:42
【问题描述】:

这是我的自定义解析器:

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

【问题讨论】:

  • 您使用的是 DataTables 还是 tablesorter?如果你想继续使用 tablesorter,试试我的fork of tablesorter,它默认使用字母数字排序。所以在你的情况下不需要特殊的解析器。
  • 我同时使用了用于分页的数据表和用于排序的表排序器。问题是我的自定义表格排序器解析器无法使用数据表分页。我不知道为什么我不使用数据表排序,所以我现在已将代码切换为使用数据表排序。我在数据表中实现了一个自定义解析器,现在一切正常。因此,这个问题现在是多余的。感谢您的关注。

标签: jquery tablesorter


【解决方案1】:

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

工作fiddle:

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

【讨论】:

  • 感谢您展示它的工作原理。当您单击列标题时,您的小提琴在没有“sortList:[[0,0]]”的情况下工作,它只是不会在加载时排序。我真的不明白为什么我的代码不起作用。所以这让我很难过。我正在使用分页,所以我认为这可能会导致问题。当我删除分页时,我的原始代码工作正常,所以现在我怀疑分页中的某些东西阻止了它的工作。我正在使用 datatables.net 进行分页和过滤,我不知道为什么我也不使用 datatables.net 进行排序。我要去检查了。
  • 好的,我不明白为什么 tablesorter 不能使用 datatables.net 分页,但我设法使用 datatables.net 排序而不是 tablesorter。感谢您确认问题不是我的代码。
  • @careywalker 更新您上面的帖子,我可以尝试帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 2023-04-05
  • 2014-04-10
  • 2019-01-14
  • 1970-01-01
相关资源
最近更新 更多