【问题标题】:jQuery Tablesorter - custom parser not workingjQuery Tablesorter - 自定义解析器不起作用
【发布时间】:2012-06-21 14:42:14
【问题描述】:

我正在尝试为 jQuery 插件 Tablesorter 编写自定义解析器。这个想法是让它在第一次点击时按降序对数字进行排序。

但是,当我对表格进行排序时,顺序并没有改变。有时有几行移动,但大多数保持不变。代码如下:

$.tablesorter.addParser({
    id: 'desc',
    is: function(s) { return false },
    format: function(s) {
        return 1.0 / parseFloat( s.replace(/,/g,'') );
    },
    type: 'numeric'
});

我编写的其他解析器工作正常。我尝试用 9999 减去数字而不是 1.0 除以它,以防浮点数有问题(运气不好)。

【问题讨论】:

    标签: jquery parsing tablesorter


    【解决方案1】:

    我找到了解决方案。我在每列中有一些空单元格,它们被解析为“NaN”。为什么这搞砸了排序,我不知道(空白单元格间断地与常规数字隔开,没有任何顺序)。

    简而言之,这段代码适用于格式化函数:

     format: function(s) {
      if ( s == '' )
       return 0;  
      return -parseInt( s.replace(/,/g,'') );
     }
    

    【讨论】:

    • 对空字段很好。甚至没有考虑阅读您的 OP 的可能性。
    【解决方案2】:

    要以相反的数字顺序对某些内容进行排序,对我来说,自然的方法是将其乘以 -1,而不是您尝试过的方法。

    至于解析器本身,我注意到的唯一区别是您返回的是一个实际数字,而 Tablesorter 站点上的 parser example 返回一个字符串。也许在返回之前将值转换回字符串会起作用?

    【讨论】:

    • 不是返回一个数字吗? replace(/bad/,0) 会返回 0,而不是“0”,对吧?
    • 不,replace 总是返回一个字符串。您需要使用 parseInt,就像您在刚才发布的解决方案中所做的那样。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多