10

我是 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() 插件找不到表,所以我尝试使用jQuery $.when

错误是这个

未捕获的类型错误:无法读取未定义的属性“asSorting”

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

我也试过:

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

6 回答 6

37

这个另一个堆栈溢出问题有一个更清晰的答案,它必须有 a<thead>和 a<tbody>才能工作: Jquery datatable integration error?

你的两个都缺。

于 2013-08-26T20:55:46.117 回答
8

我这样做了,它有效。显然数据表的排序存在一些问题。我不知道为什么。

$("#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
        ]
});
于 2013-06-27T19:43:57.967 回答
1

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

只需像这样更改 _fnColumnIndex :

function _fnColumnIndex(iColumnIndex) {
        return iColumnIndex;
}
于 2015-08-04T20:33:10.203 回答
0

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

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

var tableProgress;
tableProgress = "<table id='table-progress'><tr><td></td></tr></table>";
$("#send-one").html('done. ' + tableProgress);
$('#table-progress').dataTable();  
于 2013-06-26T13:58:20.120 回答
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 对象中已有它。

于 2013-06-26T13:58:31.137 回答
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();
于 2013-06-26T16:20:19.700 回答