我已经成功地在 iframe 中初始化了一个 jQuery DataTable,但是如果我尝试在同一域的 iframe 中运行一个函数,它会重新初始化 DataTable 而不是使用现有的。我怎样才能解决这个问题?
我在 iframe 的 JS 文件中的代码:
$(document).ready(function(){
listTable.initDataTables();
});
var listTable = {
initDataTables: function() {
$.each($('.dataTable'), function(){
var jqTable = $(this);
// Define the columns
var columns = [];
var columnHeadings = jqTable.find('thead > tr:eq(1) > th');
$.each(columnHeadings, function(){
var code = $(this).attr('data-code');
var column = { data: code, defaultContent: '' };
columns.push(column);
});
// Initiate the table
var dataTable = jqTable.DataTable({
'ajax': {
'url': '/get-data',
'type' : 'GET'
},
'columns': columns,
'responsive': true,
'scroller': false,
'select': true,
'bLengthChange': false,
'bFilter': true,
'bInfo': true,
});
});
}
};
当我在没有 iframe 的窗口中运行以下代码时,一切正常:
$('table').DataTable().ajax.url();
// returns '/get-data'
但是,当我从包含 iframe 的父窗口运行以下代码时,会返回 NULL:
$('iframe').contents().find('table').DataTable().ajax.url()
// returns NULL
我还注意到,当我从父窗口运行代码时,会再次添加导航栏。所以看起来 DataTable() 函数正在同一个表上创建一个新实例。