我正在使用DataTables列出行。最近,我在数据表上实现了ContextMenu插件,使用户能够右键单击任何行并选择上下文选项,例如编辑行、删除行等等。
以下是用于在 DataTable 上实现 ContextMenu 的代码:
$('#dtPOL').dataTable({
"fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
$(nRow).contextMenu({
menu: 'cntxtmnuDataTable'
},
function (action, el, pos) {
if (action != '') {
alert('You selected: ' + action);
}
return true;
});
}
});
除此之外,我还在 DataTable 上实现了向下钻取功能,如向下钻取行中给出和解释的那样,它运行良好,没有任何故障。以下是代码:
$('#dtPOL tbody td').live('click', function () {
var nTr = this.parentNode;
var i = $.inArray(nTr, anOpen);
if (i === -1) {
$('img', this).attr('src', gImageURL + "b-qv-hide.png");
var nDetailsRow = oTable.fnOpen(nTr, fnQuickView(oTable, nTr), 'quickView');
$('div.innerDetails', nDetailsRow).slideDown();
anOpen.push(nTr);
}
else {
$('img', this).attr('src', gImageURL + "b-qv-show.png");
$('div.innerDetails', $(nTr).next()[0]).slideUp(function () {
oTable.fnClose(nTr);
anOpen.splice(i, 1);
});
}
});
上述代码段中调用的函数如下:
function fnQuickView(oTable, nTr) {
var aData = oTable.fnGetData(nTr);
var sOut = '<div class="innerDetails">';
sOut += '<table cellpadding="5" cellspacing="0" border="0">';
sOut += '<tr><td>Detailed Description:</td><td>:</td><td>' + aData[2] + '</td></tr>';
sOut += '</table>';
sOut += '</div>';
return sOut;
}
现在,一旦我调用 ContextMenu,问题就开始了。正如我所做的那样,向下钻取功能停止工作。在调试时,我发现 TD.control 上的 click 事件在调用 ContextMenu 后根本没有触发。
曾尝试在 DataTable 论坛和 Google 上进行搜索,但没有任何帮助。我敢肯定,我错过了一些东西。请您帮助我,因为我已经花了 4 多天了,但仍然没有成功。谢谢大家。