当我在Modal弹出窗口中打开jQuery数据表时,以下代码返回null。
/**
* Return the settings object for a particular table
* @param {node} nTable table we are using as a dataTable
* @returns {object} Settings object - or null if not found
* @memberof DataTable#oApi
*/
function _fnSettingsFromNode ( nTable )
{
for ( var i=0 ; i<DataTable.settings.length ; i++ )
{
if ( DataTable.settings[i].nTable === nTable )
{
return DataTable.settings[i];
}
}
return null;
}
此代码来自jQuery库。
我想知道它会在哪些情况下返回null
。
在一般页面中它工作正常。
在模态弹出窗口中,如果你第二次打开模态弹出窗口,那么它总是返回null。
DataTable.settings[i].nTable === nTable
此条件不匹配事件,因为它在两端都有相同的表。
请帮帮我。
答案 0 :(得分:0)
每次打开模态弹出窗口时,是否重新创建表格? (这是一个jQuery对话框吗?)如果是这样的话,你可能需要首先使用旧的fnDestroy()。
你是在破坏弹出窗口,每次都重新创建它,还是只是隐藏/关闭它?如果要破坏它,请确保先正确处理表格 - 也许将其销毁,或者将其移动到DOM中的其他地方,以便下次需要时可以将其取回。
答案 1 :(得分:0)
使用此方法而不是旧方法。
// This function sets up click handler for the rows of the
// data table.
function _fnSetupMyRowClicks() {
//Handle the clicks for the rows in the employee table. Note that the
//.live() is deprecated in 1.7 and the.on() and .off() functions need
//to be uese.
//oTable.find('tbody').find('tr').live('click', function (event) {
//unbind any previously bound click event on the row - just in
//case the table has gone stale or whatever. Refer to the URL
//http://www.datatables.net/forums/discussion/comment/43117
$(document).off('click', 'tbody > tr');
//And freshly bind the click event, note the use of .on(). The
//suggested method by Datatables is .live(), but this is deprecated
//in jQuery 1.7
$(document).on('click', 'tbody > tr', function () {
//remove the selection of the currently selected row
oTable.$('tr.row_selected').removeClass('row_selected');
//add selection to the row that was clicked
$(this).addClass('row_selected');
if (properties.fnRowSelected != null) {
properties.fnRowSelected();
}
});
//});
}