我正在尝试执行与此question相同的任务。
我有一个工作的jQuery dataTable
我想要一个函数来重置排序,这是在用户选择任何列之前,与从HTML读取的一样。
它使我找到了一个不错的插件。
http://datatables.net/plug-ins/api/fnSortNeutral
jQuery.fn.dataTableExt.oApi.fnSortNeutral = function ( oSettings )
{
/* Remove any current sorting */
oSettings.aaSorting = [];
/* Sort display arrays so we get them in numerical order */
oSettings.aiDisplay.sort( function (x,y) {
return x-y;
} );
oSettings.aiDisplayMaster.sort( function (x,y) {
return x-y;
} );
/* Redraw */
oSettings.oApi._fnReDraw( oSettings );
};
但是我不知道“如何使其工作”。任何人都知道什么是“ oApi”,还是在使用此插件之前需要更多设置?
因为我的脚本显示为
Uncaught TypeError: Cannot read property 'oApi' of undefined
,所以在我复制脚本之后,该错误使函数未定义。我该怎么办 ? 最佳答案
您提供的链接中有一个用法示例。
var table = $('#example').dataTable();
// Sort in the order that was originally in the HTML
table.fnSortNeutral();
编辑初始化时尝试给它一个“订单”属性:JSBin
jQuery.fn.dataTableExt.oApi.fnSortNeutral = function ( oSettings )
{
/* Remove any current sorting */
oSettings.aaSorting = [];
/* Sort display arrays so we get them in numerical order */
oSettings.aiDisplay.sort( function (x,y) {
return x-y;
} );
oSettings.aiDisplayMaster.sort( function (x,y) {
return x-y;
} );
/* Redraw */
oSettings.oApi._fnReDraw( oSettings );
};
$(document).ready(function() {
var oTable = $('#example').dataTable({
"order" : [[ 1, "desc" ]]
});
setTimeout(function() {
oTable.fnSortNeutral()
}, 1000)
});