调用ContextMenu后,绑定到数据表TD的click事件不起作用

时间:2012-07-21 16:14:44

标签: jquery contextmenu jquery-datatables

我正在使用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天但仍然没有成功。提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

问题确实在于contextMenu插件....它解除了所有.click事件在网页的所有元素上的绑定...所以简单地注释掉.js文件的所有语句,它们取消绑定文件上的.click事件......这个诀窍对我有用......