Jquery 数据表的自定义排序函数未调用 onLoad
Custom sort function not called onLoad of Jquery datatable
我在数据中添加了自定义排序功能table。单击 table header 时它工作正常。但是,在 pageLoad 上,我希望使用自定义排序函数中提供的相同逻辑按该列对 table 进行排序。
它似乎没有这样做。
这是我的代码片段
$(document).ready(function(){
$("#stripedTableAcp").DataTable({
"columnDefs": [
{
"type": "acp_name",
"targets": 3
}
],
"order": [[ 3, "asc" ]],
"pageLength": 100,
"lengthMenu": [100, 500, 1000, 2000, 5000]
});
$.fn.dataTableExt.oSort["acp_name-desc"] = function (x, y)
{
console.log("1");
x = jQuery(x).text();
y = jQuery(y).text();
temp = x.split("-");
xPart1 = temp[0];
xPart2 = parseInt(temp[1]);
temp = y.split("-");
yPart1 = temp[0];
yPart2 = parseInt(temp[1]);
if(xPart1 > yPart1)
{
return -1;
}
if(xPart2 > yPart2)
{
return -1;
}
return 1;
};
$.fn.dataTableExt.oSort["acp_name-asc"] = function (x, y)
{
console.log("2");
x = jQuery(x).text();
y = jQuery(y).text();
temp = x.split("-");
xPart1 = temp[0];
xPart2 = parseInt(temp[1]);
temp = y.split("-");
yPart1 = temp[0];
yPart2 = parseInt(temp[1]);
if(xPart1 > yPart1)
{
return 1;
}
if(xPart2 > yPart2)
{
return 1;
}
return -1;
}
});
请注意,添加到函数中的 console.log 会在 table header 被点击时触发,但不会在页面加载时触发
数据table版本为CDN提供的1.10.19
非常感谢任何帮助。
您只声明了它们。在document.ready()的最后一行调用。
问题出在初始化自定义插件之前初始化数据表。在声明数据表之前移动插件代码后,问题就解决了。
我在数据中添加了自定义排序功能table。单击 table header 时它工作正常。但是,在 pageLoad 上,我希望使用自定义排序函数中提供的相同逻辑按该列对 table 进行排序。 它似乎没有这样做。 这是我的代码片段
$(document).ready(function(){
$("#stripedTableAcp").DataTable({
"columnDefs": [
{
"type": "acp_name",
"targets": 3
}
],
"order": [[ 3, "asc" ]],
"pageLength": 100,
"lengthMenu": [100, 500, 1000, 2000, 5000]
});
$.fn.dataTableExt.oSort["acp_name-desc"] = function (x, y)
{
console.log("1");
x = jQuery(x).text();
y = jQuery(y).text();
temp = x.split("-");
xPart1 = temp[0];
xPart2 = parseInt(temp[1]);
temp = y.split("-");
yPart1 = temp[0];
yPart2 = parseInt(temp[1]);
if(xPart1 > yPart1)
{
return -1;
}
if(xPart2 > yPart2)
{
return -1;
}
return 1;
};
$.fn.dataTableExt.oSort["acp_name-asc"] = function (x, y)
{
console.log("2");
x = jQuery(x).text();
y = jQuery(y).text();
temp = x.split("-");
xPart1 = temp[0];
xPart2 = parseInt(temp[1]);
temp = y.split("-");
yPart1 = temp[0];
yPart2 = parseInt(temp[1]);
if(xPart1 > yPart1)
{
return 1;
}
if(xPart2 > yPart2)
{
return 1;
}
return -1;
}
});
请注意,添加到函数中的 console.log 会在 table header 被点击时触发,但不会在页面加载时触发
数据table版本为CDN提供的1.10.19
非常感谢任何帮助。
您只声明了它们。在document.ready()的最后一行调用
问题出在初始化自定义插件之前初始化数据表。在声明数据表之前移动插件代码后,问题就解决了。