在jquery中双击事件获取表的rowid

时间:2013-03-04 10:27:42

标签: javascript jquery asp.net-mvc-3 asp.net-mvc-4

我正在使用mvc4和jquery。

我正试图找到一种方法来使整行触发双击事件。

我的方案是,包含参数Person ID,FirstName和Lastname的模型。

但是html表只显示FirstNmae和Lastname。

在哪里存储人员ID,如果隐藏它也不会进入javascript和空间问题。

我需要的是,让行可以双击,然后获取personID,其次是隐藏最终用户的人员ID。

为了获得我使用的人格,

$('#EditTable td').dblclick(function () {
    $(this).find('td:eq(1)')
    $(this).find('td:first').text()
}

但没有得到任何价值。

5 个答案:

答案 0 :(得分:8)

<强>解决方案

问题是该事件是针对td元素触发的,因此this引用了td元素。您需要获取父tr,然后调用find函数。

这样的事情:

$('#EditTable td').dblclick(function () {
    var $this = $(this);
    var row = $this.closest("tr");
    row.find('td:eq(1)');
    row.find('td:first').text();
}); //<-- NOTE: you dont close correctly in your example, which cause console errors

Here is a working example.


或者,您可以将事件分配给tr元素,这样可以保留原始功能代码...

$('#EditTable tr').dblclick(...

就个人而言,我更倾向于使用data属性存储“元数据”类型的内容。例如:

$('#EditTable td').dblclick(function () {
    var $this = $(this);
    var row = $this.closest("tr");
    var id = row.data("id");
});

使用以下html表:

<table id="EditTable">
    <tr data-id="1">
        <td>1</td><td>One</td>
    </tr>
</table>

Here is a working example using data attributes.

答案 1 :(得分:1)

实际上,您可以使用$.data('personID',1)方法将模型详细信息存储在DOM树中。这样,您可以隐藏用户的personID。当用户dbl点击某行时,请获取相应的personID $.data('personID')

//setting the personID
$.data('personID',2);

//getting the personID
$.data('personID'); //returns 2

答案 2 :(得分:0)

你必须写:

// You want event fired on row `tr` and not on `td`
$('#EditTable tr').dblclick(function () {
    $(this).find('td:eq(1)')
    $(this).find('td:first').text()
}

修改

最好的方法是:

$('#EditTable').on(dblclick, 'tr', function () {
    var $rowClicked = $(this);
    var secondCell = $rowClicked.find('td:eq(1)');
    var textOfFirstCell $rowClicked.find('td:first').text();
}

答案 3 :(得分:0)

试试这个

$('#EditTable tr').dblclick(function () {
  var $this=$(this);
  $this.find('td:first').text(); //get personid
  $this.find('td:first').hide(); //hide the personrow... u can use remove()
});

答案 4 :(得分:0)

试试这个:

 $('#EditTable tr').dblclick(function () {
   $(this).find('td:eq(1)')
   $(this).find('td:first').text()
 });

尝试重复TRs,可能是一个错字或者您在结束时遇到的错误应该是});