添加了以下td。日期值的格式为 1990年8月1日。我想对那个专栏进行排序。但它没有用。如何正确设置数据排序值以便以正确的方式排序
<td data-sort-value="${info.offDate}" class="${someclass}">${info.offDate}</td>
我有以下用于排序的javascript -
$(function() {
$("#infoListTable").tablesorter({
textExtraction: function(node) {
var attr = $(node).attr('data-sort-value');
if (typeof attr !== 'undefined' && attr !== false) {
return attr;
}
return $(node).text();
},headers: {
dateFormat: 'dd-mm-yyyy',
6: { sorter:'otherDate' }
}
});
});
答案 0 :(得分:1)
'dd-mm-yyyy'的内置解析器不了解月份名称。它期待所有数值。
您可以添加自己的解析器。由于现代浏览器能够解析new Date("dd MMM yyyy")
,因此解析器非常简单(demo):
$.tablesorter.addParser({
id: 'date-dd-MM-yyyy',
is: function() {
return false;
},
format: function(str) {
var date = str ? new Date(str) : str;
return date instanceof Date && isFinite(date) ? date.getTime() : str;
},
type: 'numeric'
});
$('table').tablesorter({
headers: {
6: { sorter: 'date-dd-MM-yyyy' }
}
});
此外,textExtraction
方法可以简化为:
textExtraction: function(node) {
return $(node).attr('data-sort-value') || $(node).text();
}
因为如果未定义而不是.attr()
,jQuery false
函数将返回一个空字符串。