Jquery 右键单击后获取html表的行id

Jquery 右键单击后获取html表的行id,jquery,Jquery,这里我想做的是捕获用户右键单击的每一行的id。因此,如果用户右键单击id=22的行,那么我需要捕获“22”。我不熟悉Jquery 以下是我到目前为止的情况: $("tr").mousedown(function(event) { if (event.which === 3) { alert($(this).attr("id")); } }); 但这并没有给我任何回报。每个都附有一个id。如何得到它是一个问题 编辑: 即使使用“tr”,出于某种原因,我也无法检

这里我想做的是捕获用户右键单击的每一行的id。因此,如果用户右键单击id=22的行,那么我需要捕获“22”。我不熟悉Jquery

以下是我到目前为止的情况:

  $("tr").mousedown(function(event) {
    if (event.which === 3) {
      alert($(this).attr("id"));
    }
  });
但这并没有给我任何回报。每个
都附有一个id。如何得到它是一个问题

编辑:


即使使用“tr”,出于某种原因,我也无法检测到mousedown事件。

您的示例对我来说没有任何问题

$(文档).ready(函数(){
$(“#tbl1 tbody tr”).mousedown(函数(事件){
if(event.which==3){
警报($(this.attr(“id”));
}
});
});

好的,根据您在我上一个答案的评论中提出的问题,您应该更改您的问题以符合您的要求。您正在寻找一个右键单击鼠标id显示

这应该起作用:

$("#tbl1 tbody tr").bind("contextmenu",function(e) {
   e.preventDefault();
   alert($(this).attr('id'));
});
这是最新的小提琴:

根据您在评论中提供的详细信息,您希望在右键单击每行时,一个警报显示所单击的tr元素的id:

试试这个:

 $('#tbl1 tbody tr').mousedown(function(e){

    if(e.button==2) alert($(this).attr('id'));

 });

我认为datatables会在DOM就绪后绑定,因此您可能需要执行以下操作:

$(function() {
    $('#tbl1').on('contextmenu', 'tr', function(e) {
        e.preventDefault();
        alert(this.id);
    });
});
如果仍然不起作用,请尝试更详尽的测试:

$(function() {
    $('body').on('contextmenu', 'tr', function(e) {
        e.preventDefault();
        alert(this.id);
    });
});
您可以使用带有指定参数的
.on()
,以便将事件侦听器附加到已知的可用dom就绪时间元素

第一个将把事件监听器绑定到
#tbl1
,而最后一个将把事件监听器连接到
body
。因此,每次右键单击身体内部的任何东西时,都会检查元素是否为
tr
,并会触发。
由于事件附加到
主体
(并且它很可能不会随着应用程序的使用而改变)很可能会起作用,但是它太宽了,所以如果您将其限制在
div
作为datatables的父级,它会更好(因为可以防止无用的检查),取决于datatables如何操作DOM。

确保在文档准备好后绑定处理程序。旁注:你能给我一个JSFIDLE中的页面示例吗?我想我可能还有另一个问题,因为我甚至没有检测到mousedown事件。我可以到达
#tbl1 tbody
,但这就是终点。如果我将
tr
添加到它,我就不会得到事件。正如您所知,使用
$(“#tbl1”).find('tbody')。find('tr')
的速度几乎是
$(“#tbl1 tbody tr”)
的两倍。此页面可能没有问题,但最好养成使用
find
的习惯:)这也会有所帮助hhttp://stackoverflow.com/questions/706655/bind-event-to-right-mouse-clickHi 安东尼。我只是注意到没有检测到鼠标下降事件。你知道为什么吗?正如前面提到的,你确定你的
tr
在你连接鼠标向下手柄时确实存在吗?@Jordan。既然如此,我不确定。我正在使用一个插件(datatables),所以我不确定。有什么方法可以告诉我吗?@user1709311在
$(“#tbl1 tbody tr”)行中放置一个断点。mousedown(函数(事件){
并在浏览器控制台中输入选择器。查看它是否包含您期望的所有行。Datatables仅将当前显示在页面上的行放在页面上,因此如果您需要将其放在不同页面上的行上,则需要在重绘该表时添加事件,但请确保检查给定行是否已包含事件无论是否通风,或者您可以添加多个!我过去曾使用过,将事件添加到数据表可能很困难:(祝你好运!@user1709311你应该在你的问题中说明你使用的是
datatables
。当右键单击
tr
,我仍然对我发布的JSFIDLE没有问题。谢谢你,巴特。我现在要试试这个。