2014-09-19 169 views
1

我有一个比赛结果http://bhaa.ie/events/eircom-2014表,其中年龄类别和与年龄类别的位置显示在一个列上。年龄类别具有SM,35M,40M,...,85M的值。 p0x表示该类别内的跑步者位置。jquery tablesorter - 字母数字排序优先

SM p01 
35M p01 
SM p02 
45M p01 

默认此刻排序给予优先于35 categoty,即

35M p01 
45M p01 
SM p01 
SM p02 

我宁愿为SM(即高级男装)首次出现在排序顺序

SM p01 
SM p02 
35M p01 
45M p01 

这可能与jQuery tablesorter?

回答

1

只需使用custom parser进行排序,像这样:

$.tablesorter.addParser({ 
    id: 'age', 
    is: function(s) { 
     return false; 
    }, 
    format: function(s) { 
     return (s === 'SM' ? 0 : parseInt(s.replace('M', ''), 10)); 
    }, 
    type: 'numeric' 
}); 

$(function() { 
    $("table").tablesorter({ 
     headers: { 
      0: { 
       sorter:'age' 
      } 
     } 
    }); 
});     

的完整代码可在jsfiddle。 点击t0头在行动中看到排序

0

如果您使用我的fork of tablesorter,您可以设置stringTo optionmin迫使字母字符总是排序前的最低数量(demo):

$(function() { 
    $('table').tablesorter({ 
     theme: 'blue', 
     stringTo: "min", 
     headers: { 
      4: { 
       sorter: 'digit' 
      } 
     } 
    }); 
}); 

另外,headers选项设置为确保将列设置为使用数字解析器而不是文本解析器,因为“S”位于第一行,因此该列被检测为文本列。