父级的jQuery父级

我目前正在试图find一个父元素的父母。 我有一个链接被点击在<td> ,我想获得<tr>对象。

为什么不会“$(this).parent()。parent()”工作? 什么?

谢谢,
布伦丹

编辑:在我的语法似乎是一个错误扔掉了整个事情。 “$(this).parent()。parent()”实际上可以工作,但是我最终用$(this).closest('tr')“结束了,因为它看起来是最有效的解决scheme。

最好的方法可能是使用closest

 $(this).closest('tr'); 

查看文档 :

首先查看当前元素以查看它是否与指定expression式匹配,如果是,则返回元素本身。 如果不匹配,那么它将继续遍历父文件,直到find与指定expression式匹配的元素。 如果找不到匹配的元素,则不会返回任何匹配的元素。

它应该工作。 您也可以尝试$(this).parents(tag),其中tag是您想要查找的标签。

例如:

 $(this).parents("tr:first") 

将find最接近的“上链”。

这应该工作…你可以尝试

 $(this).parents(':eq(1)'); 

。父母(select器)说得到所有匹配select器的祖先

和:eq(1)说find列表中的oneth(零索引,所以第二个)元素

这个片段在过去为我完成了:

 $(this).parent().parent(); 

为我们发布一些代码,看看是否有其他问题的地方…

也试试

 $(this).closest('div.classname').hide(); 

如果父类有任何types的id / class,可以使用父类(),但是除非你过滤()或者以其他方式阻止

 $(this).parents('.myClass'); 

希望这可以帮助别人:)

尝试将$(this).parent()包装到像$($(this).parent())这样的jQuery对象中。我经常发现需要这样做来确保我有一个有效的jquery对象。 从那里你应该能够得到父母的父母,或者使用prev()也许。

 var getParentNode = function(elem, level) { level = level || 1; for (var i = 0; i < level; i++) { if (elem != null) { elem = elem.parentNode; } } return elem; } 

.closest()并不总是最好的select,特别是当你有相同的元素构造。

 <div> <div> <div> </div> </div> </div> 

你可以做父母的父母,这很容易:

 var parent = $('.myDiv').parent(); var parentParent = $(parent).parent(); var parentParentParent = $(parentParent).parent(); 

等等