我正在尝试执行与此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)

});

07-27 22:09