表使用textExtraction在td中使用data-sort-value属性进行排序

时间:2018-02-07 09:44:55

标签: jquery-plugins tablesorter

添加了以下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' }

    } 

});

});

1 个答案:

答案 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函数将返回一个空字符串。