<table>
<tbody>
<tr>
<td class="TargetRow">Not this one</td>
</tr>
</tbody>
<tbody> ... </tbody>
<tbody>
<tr>
<td class="TargetRow">This one</td>
</tr>
</tbody>
<tbody> ... </tbody>
<tbody>
<tr class="ContextRow"> ... </tr>
</tbody>
</table>
鉴于上述HTML,我试图找到一种方法来获取 TargetRow 类 tr 的内容。即对于包含 td.TargetRow 的第一个前一个tbody,返回 td.TargetRow
我正在使用jQuery,目前我可以使用以下方法获取包含ContextRow的 tbody :
jQuery(contextRow).parents("tbody").first()
我现在如何找到包含 tr.ContextRow 的 tbody 之前的兄弟?
如果只有一种方法可以让我从 contextRow 走到DOM树,直到找到匹配“td.TargetRow”的元素,那么这将是理想的
非常感谢。
答案 0 :(得分:1)
jQuery('.ContextRow').closest("tbody").siblings('tbody td.TargetRow:last');
编辑:最后不是第一次
答案 1 :(得分:1)
我对你的描述感到有些困惑,但是当你说“找到包含tr.ContextRow的那个tbody的前一个兄弟”时,听起来你想要找到之前的{{1包含类<tbody>
的元素并获取其.contextRow
。
如果这就是你想要的,试试这个。
.targetRow
如果您想说jQuery(contextRow).parents("tbody:first")
.prevAll('tbody:has(tr.ContextRow):first td.TargetRow');
,请执行td.TargetRow
。
答案 2 :(得分:0)
$(".ContextRow").closest("tbody").prevAll().find(".TargetRow").eq(0).css({color: "red"});
这将返回最接近的前一个.TargetRow
答案 3 :(得分:-2)
Closest - .closest()
完全符合您的需要。
获取与选择器匹配的第一个祖先元素,从当前元素开始并逐步向上遍历DOM树。
您的查询将是,
$('.ContextRow').closest('tbody').siblings('tbody td.TargetRow').last();
它将返回一个对象(与父项不同,它返回多个元素直到顶部),如果id没有找到,则返回零。