3

我有以下功能:

$("#example tbody").click(function(event) {
        $(oTable.fnSettings().aoData).each(function (){
            $(this.nTr).removeClass('row_selected');
        });
        $(event.target.parentNode).addClass('row_selected');
    });

当用户单击表中的 td 元素时,它会将 row_selected 类添加到行中。但是,当用户单击 td 内的输入元素时,它会将 row_selected 类添加到 td。

有没有办法可以更改 event.target.parentNode 以便将类添加到父 tr 而不是父级?

4

4 回答 4

6

使用closest().

$(event.target).closest('tr').addClass('row_selected');
于 2012-07-22T18:18:34.587 回答
1

更改您的处理程序以使用 jQuery 的事件委托而不是您自己的...

$("#example tbody").on("click", "tr", function(event) {

...然后你可以使用this...

$(this).addClass('row_selected');
于 2012-07-22T18:37:11.270 回答
0

您可以使用parentsUntil()函数,这有点像寻找祖先。我不记得祖先的功能,但这会起作用:

$(event.target).parentsUntil("tr").addClass('row_selected');
于 2012-07-22T18:25:53.007 回答
0

你可以试试这个

$(event.target).closest('tr').addClass('row_selected');

而不是你的线

$(event.target.parentNode).addClass('row_selected');

使用最接近(),您将能够将row_selected类应用于您单击的元素的最近tr元素,这可能是其中的一个td或任何其他元素。

于 2012-07-22T18:28:17.530 回答