我正在使用jquery tablesorter,我正在尝试使用与此类似的值对列进行排序:
$ 100,000 $ 38,000名 ($ 4,000) $ 2,000
()内的数据是负数。使用默认排序功能时,它不会将($ 4,000)识别为负数,因此我正在尝试创建自定义函数来处理此问题。
以下解决方案是我提出的,它运行正常。但我想知道是否有更好的解决方案?我是jquery的新手,只是寻找一些见解。
$(document).ready(function()
{
$.tablesorter.addParser({
// set a unique id
id: 'currency-column',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
s = s.replace(/$/g,"");
s = s.replace(/\(/g,"-");
s = s.replace(/\)/g,"");
return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
},
type: 'numeric'
});
$("#myTable").tablesorter({
headers: {
3: { sorter:'currency-column' },
4: { sorter:'currency-column' },
5: { sorter:'currency-column' },
6: { sorter:'currency-column' },
7: { sorter: false },
10: { sorter:'currency-column' }
}
});
}
);
同样,它做了所需要的事情,我对结果感到满意(也许我应该把它放在那里......),但是如果有更好的解决方案,我很乐意听到它。
由于
答案 0 :(得分:2)
如何删除“,”
s = s.replace(/,/g,"");
所以,你的功能变成了:
format: function(s) {
s = s.replace(/$/g,"");
s = s.replace(/\(/g,"-");
s = s.replace(/\)/g,"");
s = s.replace(/,/g,"");
return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.-]/g),""));
},
^。^