我目前正在尝试查找元素父级的父级。我点击的链接位于<td>
,我想获取<tr>
对象。
为什么不会“$(this).parent()。parent()”工作?会是什么?
谢谢,
布伦丹
编辑:我的语法中出现错误是将整个事情抛弃了。 “$(this).parent()。parent()”确实可以工作,但我最后还是花了$(this).closest('tr'),因为它似乎是最有效的解决方案。
答案 0 :(得分:219)
最好的方法可能是使用closest
:
$(this).closest('tr');
最近的工作方法是首先查看当前元素以查看它是否与指定的表达式匹配,如果是这样,它只返回元素本身。如果它不匹配,那么它将继续遍历父项的父文档,直到找到与指定表达式匹配的元素。如果找不到匹配的元素,则不会返回任何匹配的元素。
答案 1 :(得分:20)
它应该工作。您也可以尝试$(this).parents(tag),其中tag是您要查找的标记。
例如:
$(this).parents("tr:first")
将找到最接近的tr“上链”。
答案 2 :(得分:9)
这应该有用......你可以试试
$(this).parents(':eq(1)');
.parents(选择器)表示获取与选择器匹配的所有祖先
和:eq(1)说找到列表中的oneth(零索引,所以第二个)元素
答案 3 :(得分:6)
这个片段过去曾为我演过:
$(this).parent().parent();
为我们发布一些代码,看看是否有其他问题......
答案 4 :(得分:5)
也试试
$(this).closest('div.classname').hide();
答案 5 :(得分:2)
如果你有父母的任何类型的id / class,你可以使用parents()但是这会给你所有父母的&lt;身体&gt;除非你过滤()或以其他方式停止它,如
$(this).parents('.myClass');
希望这有助于某人:)
答案 6 :(得分:1)
尝试将$(this).parent()包装到像$($(this).parent()这样的jQuery对象中)我经常发现需要这样做以确保我有一个有效的jquery对象。从那里你应该能够得到父母的父母,或者使用prev()或者。
答案 7 :(得分:1)
var getParentNode = function(elem, level) {
level = level || 1;
for (var i = 0; i < level; i++) {
if (elem != null) {
elem = elem.parentNode;
}
}
return elem;
}
答案 8 :(得分:0)
.closest()
并不总是最好的选择。
<div>
<div>
<div>
</div>
</div>
</div>
你可以做父母的父母,这很容易:
var parent = $('.myDiv').parent();
var parentParent = $(parent).parent();
var parentParentParent = $(parentParent).parent();
等