数据表自定义排序(仅预激活)
datatables custom sort (only pre activates)
我在该列上有一些由 sType: "my-num-html" 定义的自定义排序代码。
我的专栏数据是这样的:
- AB 332
- BC 664
- CD 325
- KF 576
它默认这样排序:
- CD 325
- AB 332
- KF 576
- BC 664
它完全忽略了这些字母...我试图让它不忽略这些字母。
然后我在"dataTables.naturalSort.js"
中扩展了它
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"my-num-html-pre": function (a) {
console.log("my-num-html pre");
var x = String(a).replace(/<[\s\S]*?>/g, "");
console.log("nh: " + x);
return x;
},
"my-num-html-asc": function (a, b) {
console.log("my-num-html asc");
return naturalSort(a, b); //((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"my-num-html-desc": function (a, b) {
console.log("my-num-html desc");
return naturalSort(a, b) * -1; //((a < b) ? 1 : ((a > b) ? -1 : 0));
}
});
问题是它不应该忽略这些字母并且应该打印 asc/desc 函数...预打印我在日志中的列(使用 console.log)。
当页面加载时,即使 "pre" 也不会加载。
当您单击 header 列时:预加载,仅此而已,而且顺序不正确。
再次点击时:再次预加载,但顺序仍然不正确。
永远不会打印 "asc" 和 "desc" 日志。
EDIT:: AJAX "fnserverdata" 正在被使用,每当调用它时,订单都会重置回 AJAX 数据。
原来它是通过服务器端排序的,我不能说为什么它没有激活该代码。我仍然没有弄清楚为什么它之后不使用自定义排序进行排序。
我在该列上有一些由 sType: "my-num-html" 定义的自定义排序代码。
我的专栏数据是这样的:
- AB 332
- BC 664
- CD 325
- KF 576
它默认这样排序:
- CD 325
- AB 332
- KF 576
- BC 664
它完全忽略了这些字母...我试图让它不忽略这些字母。
然后我在"dataTables.naturalSort.js"
中扩展了它jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"my-num-html-pre": function (a) {
console.log("my-num-html pre");
var x = String(a).replace(/<[\s\S]*?>/g, "");
console.log("nh: " + x);
return x;
},
"my-num-html-asc": function (a, b) {
console.log("my-num-html asc");
return naturalSort(a, b); //((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"my-num-html-desc": function (a, b) {
console.log("my-num-html desc");
return naturalSort(a, b) * -1; //((a < b) ? 1 : ((a > b) ? -1 : 0));
}
});
问题是它不应该忽略这些字母并且应该打印 asc/desc 函数...预打印我在日志中的列(使用 console.log)。
当页面加载时,即使 "pre" 也不会加载。
当您单击 header 列时:预加载,仅此而已,而且顺序不正确。
再次点击时:再次预加载,但顺序仍然不正确。
永远不会打印 "asc" 和 "desc" 日志。
EDIT:: AJAX "fnserverdata" 正在被使用,每当调用它时,订单都会重置回 AJAX 数据。
原来它是通过服务器端排序的,我不能说为什么它没有激活该代码。我仍然没有弄清楚为什么它之后不使用自定义排序进行排序。