如何使用jQuery找到td元素的父级tr?

30

我有以下内容:

    tdToPad = tds.filter('[id^="input_Title_"]')
    pad = 60;
    tdToPad.css('margin-left', pad);
我希望做的是删除任何以“X-”开头的类,并给包含在“tdToPad”中的行添加一个名为“X-” + pad的类。
类似这样:
<tr class='X-60'>
   <td>
   </td>
</tr>

给定toToPad是指行中的td元素。 我如何给父级tr添加类“X-”+ pad? 我认为我需要类似以下的内容,但如果这是正确的方法,那么我如何删除已经有类“X-”某个值的元素,然后为此元素设置正确的类?

tdToPad.Parent('tr')
2个回答

57

你可以使用closest()方法:

从当前元素开始通过DOM树向上查找,获取匹配选择器的第一个元素。

tdToPad.closest('tr')
       .addClass('X-' + pad)

更新:

tdToPad.closest('tr').get(0).className = tdToPad.closest('tr').get(0).className.replace(/\bX\-.*?\b/g, '');
tdToPad.closest('tr').addClass('X-' + pad)

可能已经有一个以 "X-" 开头的数字类存在。在添加新类之前,有没有一种方法可以将其删除? - Alan2
@Gemma 是的,你可以移除这个类然后添加另一个类,试试更新后的答案。 - Ram
谢谢,但是我该如何仅删除名称以“X-”开头的类?在您的示例中,您只放置了类名“class”。我的情况是类可以是任何以“X-”开头的内容,并且可能已经存在一个,也可能不存在。我只想用最新的替换。谢谢。 - Alan2

8

你的答案接近正确。只需要使用正确的拼写 parent() (文档) 并在其中添加一个 addClass() (文档) 方法调用即可。

tdToPad.parent('tr').addClass( 'X-' + pad );

使用parent还是closest更好?我能否删除已经存在的以X-开头的任何类? - Alan2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接