如何使用Tablesorter的numberSorter?

时间:2014-03-13 15:34:48

标签: jquery tablesorter

我需要在列中对数字进行排序,以便负数始终按正数排序。阅读它可以在numberSorter属性的帮助下完成,但我没有找到它的任何示例。 例如,我按升序排序,如下所示:
1
2
3
4
5
6
-1
-2
-3
当我按降序排序时,它会这样排序:
6
5
4
3
2
1
-3
-2
-1

他们的例子:

$(function(){
    $("table").tablesorter({
        numberSorter : function(a, b, direction, maxColumnValue){
            // direction; true = ascending; false = descending
            // maxColumnValue = the maximum value of that column (ignoring its sign)
            return a - b;
        }
    });
});

给我错误: TypeError:x未定义

我该怎么做?

2 个答案:

答案 0 :(得分:1)

好吧,看起来你发现了一个错误。这一行(732):

sort = c.numberSorter ? c.numberSorter(x[col], y[col], dir, colMax[col], table) :

实际上应该是这样的(分别用& b代替x& y)

sort = c.numberSorter ? c.numberSorter(a[col], b[col], dir, colMax[col], table) :

然后,一旦你这样做,你可以使用这个numberSorting脚本(demo)。

$("table").tablesorter({
    theme : 'blue',
    numberSorter: function (a, b, direction) {
        if (a >= 0 && b >= 0) { return direction ? a - b : b - a; }
        if (a >= 0) { return -1; }
        if (b >= 0) { return 1; }
        return direction ? b - a : a - b;
    }
});

答案 1 :(得分:0)

   // add parser through the tablesorter addParser method 
    $.tablesorter.addParser({ 
        // set a unique id 
        id: 'mySortingFunction', 
        is: function(s) { 
            // return false so this parser is not auto detected 
            return false; 
        }, 
        format: function(s) { 
            // your logic
            return s; 
        }, 
        // set type, either numeric or text 
        type: 'numeric' 
    }); 

$(function() { 
    $("table").tablesorter({ 
        headers: { 
            6: { 
                sorter:'mySortingFunction' 
            } 
        } 
    }); 
});                  

6它是您想要使用自定义mySortingFunction排序的列号(您需要更改它)。