我是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();
答案 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文件。
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();