Javascript 从jQuery中的子元素获取父tr元素

Javascript 从jQuery中的子元素获取父tr元素,javascript,jquery,html,Javascript,Jquery,Html,我的代码中有以下表格结构 <tr> <td>Text 1 </td> <td>Text 2 </td> <td> <span class="edit" onclick="EditAccountInfo(id1)" /> </td> </tr> <tr> <td>Text 1 </td> <td>Text 2 </td

我的代码中有以下表格结构

<tr>
  <td>Text 1 </td>
  <td>Text 2 </td>
  <td> <span class="edit" onclick="EditAccountInfo(id1)" /> </td>
</tr>
<tr>
  <td>Text 1 </td>
  <td>Text 2 </td>
  <td> <span class="edit" onclick="EditAccountInfo(id2)" /> </td>
</tr>
我没有收到任何错误,
$(this)。最近('tr')
返回一个有效的对象,但是背景色样式没有应用到


我做错了什么?

这是
窗口,因为您使用的是内联事件处理程序。我建议采取一种更为低调的方式:

<span class="edit" data-account-id="id1" />
试一试


$(this)
窗口
对象,而不是单击的元素。
id
参数是什么?改为
EditAccountInfo(this)
而不是
EditAccountInfo(id1)
?@David它基本上是标识不同行的id?因为您的两行都没有
id
(任何类型)。@David我刚刚在这里粘贴了最小的代码。实际上,该表是使用来自模型对象的for-each循环生成的。因此,实际的代码类似于onclick=“EditAccountInfo('@Model.Account.Id')”。抱歉,您会注意到问题中使用了jQuery方法吗?所以可以肯定地说,他已经在使用jQuery了。虽然它使用得很糟糕。我想告诉他不要使用javascript函数,而是jquery click函数。您还可以将
这个
作为
onclick
属性中的参数传递。另外,如果您使用的是委托事件处理程序,请不要使用
.data()
从新添加的DOM元素中获取信息,因为jQuery在页面加载时仅通过
.data()
使
数据-*
属性可用。改用
.attr('data-account-id')
,它将实时读取属性,而不是从缓存中读取。
<span class="edit" data-account-id="id1" />
$(document).on('click', '.edit', function() {
    var $tr = $(this).closest('tr');
    var id = $(this).data('account-id');
    //...
});
$(document).ready(function () {
    $('td').click(function(){
        $(this).parent().css("background","red");
    });
});
$('#my-table').on('click', '.edit', function () {
    $(this).closest('tr').css('backgroundColor','red');
});