我正在使用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()
}
但没有得到任何价值。
答案 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
或者,您可以将事件分配给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>
答案 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
,可能是一个错字或者您在结束时遇到的错误应该是});