jQuery Datatables:Uncaught TypeError:无法读取未定义的属性'asSorting'

时间:2013-06-26 13:50:27

标签: jquery jquery-datatables

我是jQuery的新手,很抱歉,如果我的问题太简单了。

我正在尝试做这样的事情:

$("#send-one").html('done. ');

var tableProgress= $("<table id='table-progress'><tr><td></td></tr></table>");

$("#send-one").empty().append(tableProgress);

tableProgress.dataTable({
    "bPaginate": false,
    "bLengthChange": false,
    "bFilter": true,
    "bSort": false,
    "bInfo": false,
    "bAutoWidth": false
});

所有这些都发生在jQuery ui Dialog Box内。

它不起作用,我认为是因为.dataTable() pluggin无法找到该表,所以我尝试使用jQuery $.when

错误就是这个

  

未捕获的TypeError:无法读取未定义的属性'asSorting'

我需要的是:在$("#send-one").html('done. ' + tableProgress)中插入的表中使用.datatable插件,但直接使用.datatable()可能与插入不同步。

我也尝试过:

$("#send-one").html('done. ' + tableProgress);
$('#table-progress').dataTable();

6 个答案:

答案 0 :(得分:36)

这个其他堆栈溢出问题有一个更明确的答案,它必须有<thead><tbody>才能工作: Jquery datatable integration error?

你的两个都缺失了。

答案 1 :(得分:8)

我做了这个并且它有效。显然是aoSorting数据表的一些问题。我不知道为什么。

$("#send-one").html('done. ');

var tableProgress= $("<table id='table-progress'><tr><th></th></tr><tr><td></td></tr></table>");

$("#send-one").empty().append(tableProgress);

tableProgress.dataTable( {
    "aoColumns": [
          null
        ]
});

答案 2 :(得分:1)

如果您正在使用dataTable columnFilter插件,那么这个解决了我的问题。

只需像这样更改_fnColumnIndex:

function _fnColumnIndex(iColumnIndex) {
        return iColumnIndex;
}

答案 3 :(得分:0)

您不会调用任何异步函数(例如某些AJAX调用),因此$.when函数在这里没有意义。

当您使用将在最后一个完成后调用的函数时,以下代码应该可用。

var tableProgress;
tableProgress = "<table id='table-progress'><tr><td></td></tr></table>";
$("#send-one").html('done. ' + tableProgress);
$('#table-progress').dataTable();  

答案 4 :(得分:0)

function someAction() {
            var tableProgress;
            tableProgress = $("<table id='table-progress'><tr><td></td></tr></table>");
            $("#send-one").append(tableProgress);
            tableProgress.dataTable();                                       
}

在准备好文档时将表添加到#send-one,然后在其上调用dataTable。没有意义使用id,因为你可以将它放在jQuery对象中。

答案 5 :(得分:0)

确保正确加载插件.js文件。

http://jsfiddle.net/CdRa5/6/

var tableProgress = $('<table id="table-progress"><thead><tr><th>heading</th><th>heading</th></tr></thead><tbody><tr><td>cell</td><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr></tbody></table>');
$("#send-one").empty().append(tableProgress);
tableProgress.dataTable();