具有动态格式功能的TableSorter在addParser中

时间:2013-07-03 15:49:56

标签: javascript jquery tablesorter

我在包含字符串的列上使用TableSorter:

$.tablesorter.addParser(
    {
        id: 'positions',
        is: function(s) {
                return false;
            },
        format: function(s) {
                var abbr=s.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos);
                return abbr;
            },
        type: 'numeric'
    }
);

format函数应返回一个取决于global _sortpos变量的值。该值动态变化。这一行:

var abbr=s.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos);

删除所有非数字和非字母,然后删除一定数量的初始字符。打算按_sortpos-th字符排序。

似乎发生的情况是,当解析器添加到表分类器时,只为每个字符串解析格式函数一次。但是出于我的目的,每次我进行排序时都必须重新运行格式化函数。

到目前为止,我每次排序时都尝试添加解析器。但那没用。我还尝试通过重新运行初始化来重新初始化tablesorter

$(".tablesorter").tablesorter(
    {
        sortReset: true,
        headers: {
            1: {
                sorter: 'positions'
            }
        }
    }   
); 

但无济于事。

我该怎么办?另外:是否有比较器功能可用于潜入全局参数?然后我可以在解析器中格式化字符串,然后在slice()中使用_sortpos - 在比较器中动态运行。

1 个答案:

答案 0 :(得分:0)

我自己找到了答案:

$(document).ready(function() {  
    $(".tablesorter").tablesorter(
        {
            textSorter: function(a, b, table, column){                  
                if (column==1)
                {
                    var c=parseInt(a.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos));
                    var d=parseInt(b.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos));                 
                    return ((c < d) ? -1 : ((c > d) ? 1 : 0));
                }
                return a.localeCompare(b);              
            }           
        }
    );  
});

它不使用解析器,只使用自定义排序器对列== 1进行排序。