3

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

这是我到目前为止所拥有的:

  $("tr").mousedown(function(event) {
    if (event.which === 3) {
      alert($(this).attr("id"));
    }
  });

但这并没有给我任何回报。每个<tr>都有一个 id 附加到它。如何获得它是个问题。

编辑:

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

4

4 回答 4

2

在这里演示

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

试试这个 :

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

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

 });
于 2013-08-26T22:10:47.453 回答
2

我认为数据表在 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. 因此,每次右键单击主体内的任何内容都会检查元素是否为 atr并将触发。由于事件附加到body(并且它可能不会改变应用程序的使用)很可能会起作用,但它会太宽泛所以如果你限制它是更好的(因为防止无用的检查)tablediv的父级数据表的数量,取决于数据表如何操作 DOM。

于 2013-08-26T22:19:27.083 回答
1

好的,根据您在我之前回答的评论中提出的问题,您应该更改您的问题以匹配您想要的。您正在寻找RIGHT-CLICK 鼠标id 节目。

这应该有效:

$("#tbl1 tbody tr").bind("contextmenu",function(e) {
   e.preventDefault();
   alert($(this).attr('id'));
});

这是更新的小提琴:小提琴

于 2013-08-26T22:07:31.763 回答
0

您的示例对我有用,没有任何问题。 http://jsfiddle.net/YzR47/

$(document).ready(function() {
    $("#tbl1 tbody tr").mousedown(function(event) {
        if (event.which === 3) {
          alert($(this).attr("id"));
        }
      });
});
于 2013-08-26T21:50:28.013 回答