代码之家  ›  专栏  ›  技术社区  ›  DisgruntledGoat

jquery tablesorter-自定义分析器不工作

  •  2
  • DisgruntledGoat  · 技术社区  · 15 年前

    我正在尝试为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除以它,以防它是一个浮动问题(没有运气)。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Adam Bellaire    15 年前

    我找到了解决办法。我在每列中都有一些空单元格,它们被解析为“nan”。我不知道为什么这会把排序搞砸(空白单元格间间隔着规则的数字,对任何事物都没有排序)。

    简而言之,此代码适用于格式函数:

     format: function(s) {
      if ( s == '' )
       return 0;  
      return -parseInt( s.replace(/,/g,'') );
     }
    
        2
  •  0
  •   Adam Bellaire    15 年前

    对我来说,按相反的数字顺序排序,自然的方法是用-1相乘,而不是用你尝试过的方法。

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