父级的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();
等等