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

时间:2013-08-26 21:40:32

标签: jquery

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

这是我到目前为止所做的:

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

但这并没有给我任何回报。每个<tr>都附有一个ID。如何解决这个问题。

修改

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

4 个答案:

答案 0 :(得分: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 ready time元素。

第一个将事件监听器绑定到#tbl1,而最后一个将事件监听器绑定到body。因此,每次右键单击按下身体内的任何内容都将检查该元素是否为tr并将触发。 由于事件附加到body(并且它可能不会改变应用程序的使用)很可能会工作但是它会更宽,所以如果你限制为更好(因为防止无用的检查) tablediv它是数据表的父级,具体取决于数据表如何操作DOM。

答案 1 :(得分:1)

好的,根据您在我之前回答的评论中提出的问题,您应该更改您的问题以符合您的要求。您正在寻找 RIGHT-CLICK鼠标 ID show。

这应该有效:

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

这是更新的小提琴:Fiddle

答案 2 :(得分:1)

<强> DEMO HERE

根据您在评论中的详细信息,您希望当您右键单击每一行时,警报会显示已点击的tr元素的ID:试试这个:

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

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

 });

答案 3 :(得分:0)

你的例子对我没有任何问题。 http://jsfiddle.net/YzR47/

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