如何检测数据表插件中的右键单击

时间:2013-07-11 19:02:35

标签: javascript jquery jquery-datatables

我想检测用户是否右键单击表格中的行(数据表已启动)。

现在,如果我使用非ajax源代码,则以下代码可以正常工作:

oTable.$('tr').mousedown(function(e) {
    if (e.which === 3) { //Right Mousebutton was clicked
        window.sData = oTable.fnGetData( this );
        jQuery(this).contextMenu({ x: e.pageX + 10, y: e.pageY + 10});
    }
});

但是,如果我使用ajax源它不起作用,所以我环顾四周并尝试:

jQuery('#myTable tbody').on( 'click', 'tr', function (e) {
    alert("a click!");
    if (e.which === 3) { //Right Mousebutton was clicked
        alert("actually it was a right click!");
    }
});

此代码会检测定期点击,但如果无法识别右键单击。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

这样的东西?

jQuery('#myTable tbody').mousedown(function(e){ 
    if( e.button == 2 ) { 
      alert('Right mouse button!'); 
      return false; 
    } 
    return true; 
  }); 

答案 1 :(得分:3)

Alexey的代码在您第一次加载表时起作用,但是当您对其执行某些ajax操作时它会停止工作。因此,必须使用.on(...)方法。

我目前使用的代码如下所示:

jQuery('#myTable tbody').on( 'mousedown', 'tr', function (e) {
     alert("mouse event detected!"); 
     if( e.button == 2 ) { 
        alert('Right mouse button!'); 
        return false; 
     } 
     return true; 
});