我有一个像这样的简单 table

<table id="tempTable">
    <tbody>
        <tr id="row_01">
            <td>
                <button onclick="btnclick(this);" >Save Row</button>
            </td>
        </tr>
        <tr id="row_02">
            <td>
                <button onclick="btnclick(this);" >Save Row</button>
            </td>
        </tr>
    </tbody>
</table>

function btnclick(e) {
    var currentRow = $(e).parent().parent();
    alert(currentRow.id);
}

我想确定单击按钮所在的行。因此,如您所见,我在btnclick()中使用了一些jquery方法。但是有时我不知道按钮在行()中的放置深度,所以我正在寻找一种通过元素的<tr>标签获得祖先的方法。

有人帮助我,谢谢吗?

最佳答案

尝试这个 :

function btnclick(e) {
    var currentRow = $(e).closest('tr');
    alert(currentRow.id);
}
closest()函数将返回其选择器引用的最接近的祖先。在这种情况下,选择器是一个<tr>元素。

取自jQuery docs:



如果稍微更改HTML,则可以使用更好的方法。如果您在每个按钮上都放置了相同的类。
例如:
<td>
  <button class="myBtnClass" >Save Row</button>
</td>

然后您的jQuery将如下所示:
$(".myBtnClass").on('click',function(){
    var currentRow = $(this).closest('tr');
    alert(currentRow.attr('id'));
});

此函数将捕获对带有.myBtnClass类的任何元素的的单击。

10-05 21:01
查看更多