2012-07-21 35 views
1

我正在使用DataTables來列出行。最近,我在數據表上實現了ContextMenu插件,以便用戶右鍵單擊任意行並選擇上下文選項,如編輯行,刪除行等等。調用ContextMenu後,綁定到數據表TD的單擊事件不起作用

以下是用於在數據表執行文本菜單代碼:

$('#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中的向下鑽取功能給出的Drill-down rows解釋說,這工作得非常好,沒有任何毛刺。以下是代碼:

$('#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事件根本不會觸發。

已經嘗試過在DataTable論壇以及谷歌搜索,但沒有什麼幫助。當然,我錯過了一些東西。請求你幫助我,因爲我已經花了4天以上,但仍然沒有成功。謝謝大家。

+0

我甚至試圖在行中的所有TD上創建contextmenu,除了每行的第一個TD,懷疑contextmenu插件可能與TD單擊事件衝突但沒有成功。 已更改... $(nRow).contextMenu ... to ... $('td:not(:eq(0))',nRow).contextMenu ...在fnRowCallback API中。 – Shant 2012-07-22 16:04:05

+0

經過大量調試後,我發現問題不在於DataTable,而在於contextMenu。現在,由於時間不夠,我改變了contextmenu插件,現在我正在使用另一個上下文菜單插件... http://medialize.github.com/jQuery-contextMenu ...它建立在相同的插件,但幾乎沒有增強。 – Shant 2012-07-24 07:32:47

回答

1

問題確實與contextMenu Plugin ....它解除了網頁上所有元素的所有.click事件...因此,只需註釋掉.js文件的所有聲明即可解除文檔上的.click事件...這個技巧對我來說很有效......

+0

感謝您的回覆。我會記住這一點,但我已經實現了一個更好的插件。再次感謝你。 – Shant 2013-02-03 08:11:33