我正在使用DataTables列出行。最近,我在datatable上实现了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;
});
}
});
除此之外,我还在Drill-down rows中给出并解释了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,问题就会开始。正如我所做的那样,向下钻取功能停止工作。在调试时,我发现在调用ContextMenu之后,TD.control上的click事件根本不会触发。
尝试过搜索DataTable论坛以及Google,但没有任何帮助。当然,我错过了一些东西。请求您帮助我,因为我已经花了超过4天但仍然没有成功。提前谢谢大家。
答案 0 :(得分:1)
问题确实在于contextMenu插件....它解除了所有.click事件在网页的所有元素上的绑定...所以简单地注释掉.js文件的所有语句,它们取消绑定文件上的.click事件......这个诀窍对我有用......