我现在被困在一个特定的数据格式,无法以普通方式订购。 示例:"Last Active" column ordered
我正在尝试使用html-attribute数据顺序
<td data-order="1447147318">8 months, 4 weeks</td>
<td></td>
<td></td>
<td data-order="1460026800">Apr 07 2016 13:00:00 </td>
<td data-order="1460026800">Apr 07 2016 13:00:00</td>
但是这个没有用。它仍按字母顺序排序。 &#34;最后活跃&#34;通过当前时间戳减去给定时间戳来计算数据。 我找到了一些代码来排除空数据单元的排序,这也是必要的。
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"non-empty-string-asc": function (str1, str2) {
if (str1 == "-")
return 1;
if (str2 == "-")
return -1;
return ((str1 < str2) ? -1 : ((str1 > str2) ? 1 : 0));
},
"non-empty-string-desc": function (str1, str2) {
if (str1 == "-")
return 1;
if (str2 == "-")
return -1;
return ((str1 < str2) ? 1 : ((str1 > str2) ? -1 : 0));
}
});
_j(function () {
_j('#customerTable').DataTable({
"columns": [
{"data": "ID"},
{"data": "Type"},
{"data": "Customer"},
{"data": "Act", "defaultContent": ""},
{"data": "KND", "defaultContent": ""},
{"data": "Last Active", "defaultContent": "Not logged yet", "type": "non-empty-string"},
{"data": "Total", "defaultContent": ""},
{"data": "Today", "defaultContent": ""},
{"data": "Min Trial", "defaultContent": "", "type": "non-empty-string"},
{"data": "Max Trial", "defaultContent": "", "type": "date"}
],
"pageLength": 20,
"lengthMenu": [10, 15, 20, 50, 100]
});
});
感谢任何帮助。
答案 0 :(得分:0)
你是如何比较字符串的?当我在排序中放置警报以查看str1和atr2的值时,我看到了文本值,例如“1个月,2个星期”和“1周,1天”。鉴于您正在进行字符串比较,以字母数字顺序返回并不意外。