jQuery tablesorter如何忽略排序中的一行。

3
我目前在使用表格排序插件中遇到了一些问题。问题在于,虽然我想按照时间进行排序,但是当列中包含“n/a”时,它应该出现在排序的最后。请问有人能帮我实现这个功能吗?
下面是我的排序代码...
$("#myStoreStatus").tablesorter({
    sortList: [[2,1],[8,0],[0,0]],
    stripingRowClass: ['even','odd'],
    stripeRowsOnStartUp: true,
    widthFixed: false, 
    widgets: ['zebra'],
    dateFormat: "uk",
    headers: {
        0: { sorter: 'digit' } // column number, type
    }
});

请查看文档,可能会有像这样的一些HTML标签:data-order="10",因此您的HTML代码将如下所示:<td data-order="10">十</td>。在这种情况下,系统将采用data-order进行排序,对于N/A,您可以输入23:59值,以便显示在底部。 - Davor Mlinaric
@Davor 如果排序顺序改变,这种方法就不起作用了。 - Jadran Josimovic
好的,http://datatables.net/ 有这个选项,所以我建议看一下。也许 tablesorter 也有这个选项。 - Davor Mlinaric
2个回答

1
据我所理解,问题在于您希望n/a行始终出现在末尾,即使时间列的排序顺序发生变化。这里有一种可能的选择。
$("#myStoreStatus").tablesorter({
    sortList: [[2,1],[8,0],[0,0]],
    stripingRowClass: ['even','odd'],
    stripeRowsOnStartUp: true,
    widthFixed: false, 
    widgets: ['zebra'],
    dateFormat: "uk",
    headers: {
        0: { sorter: 'digit' } // column number, type
    },

    textExtraction: function (node) {
        if (($(node).index()==8) && ($(node).text().toLowerCase()=='n/a'))
            $(node).parent().addClass('jsnamark');
        return $(node).text();
    }

}).bind('sortEnd' function () {
    $(this).append($(this).find('.jsnamark'));
});

现在,这个程序的作用很简单。它使用textExtraction函数来检查第8个单元格(时间)是否具有“n/a”的值。如果是,则将jsnamark类添加到其行中。(如果您正在使用服务器脚本提供页面,则也可以使用jQuery或其他几种不同的方式执行相同的操作。)
排序完成后,它会重新将具有jsnamark类的行附加到表的末尾。

1
+1 干得好。我唯一能看到的可能会出现的问题是如果表格数据被修改,'n/a' 被替换为数字。此外,这个检查应该确保它是小写的 $(node).text().toLowerCase()=='n/a' - Mottie
@Mottie 都非常正确。 - Jadran Josimovic
请查看如何更改单元格值。我猜如果您使用此方法来触发updateCell,它会重新执行textExtraction。但是,我会添加“else $(node).parent().removeClass('jsnamark')”。链接:http://mottie.github.io/tablesorter/docs/example-update-cell.html - Jadran Josimovic
非常棒的解决方案。在接下来的几个月里,我会一遍又一遍地使用它。谢谢。 - Richie

1

你可能也想查看我的tablesorter分支

有一个内置选项,可以设置字符串值(例如“N / A”)在数字列中的排序方式-请参见此演示

如果您正在使用原始的tablesorter,则可以使用textExtraction选项将N / A替换为空字符串;或者使用@Jadran的代码,这也可以起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接