我目前正在尝试查找元素的父元素的父元素。我有一个在<td>
中被单击的链接,我想获取<tr>
对象。
为什么"$(this).parent().parent()"会失效?哪种方法可以解决这个问题?
谢谢,
Brendan
编辑:我的语法出了错误,导致整个代码失灵。实际上"$(this).parent().parent()"是可以工作的,但我最终选择了$(this).closest('tr')",因为它似乎是最有效的解决方案。
我目前正在尝试查找元素的父元素的父元素。我有一个在<td>
中被单击的链接,我想获取<tr>
对象。
为什么"$(this).parent().parent()"会失效?哪种方法可以解决这个问题?
谢谢,
Brendan
编辑:我的语法出了错误,导致整个代码失灵。实际上"$(this).parent().parent()"是可以工作的,但我最终选择了$(this).closest('tr')",因为它似乎是最有效的解决方案。
最好的方法可能是使用 closest
:
$(this).closest('tr');
查看文档:
closest方法首先检查当前元素是否与指定的表达式匹配,如果是,则直接返回该元素。如果不匹配,则会继续向上遍历文档,逐级检查父元素,直到找到一个匹配指定表达式的元素为止。如果没有找到匹配元素,则不返回任何内容。
这应该可以正常工作。你也可以尝试使用 $(this).parents(tag) ,其中 tag 是你想要查找的标签。
例如:
$(this).parents("tr:first")
将查找"向上链"中最靠近的tr元素。
那应该可以运行... 你可以尝试一下
$(this).parents(':eq(1)');
.parents(selector) 表示获取与选择器匹配的所有祖先元素,
:eq(1) 表示在列表中找到第二个(从0开始计数)元素。alert('anchor html(' + $(this).html() + ')');
- Lathan这段代码以前对我很有用:
$(this).parent().parent();
请您发布一些代码,以便我们查看是否存在其他问题...
$(this).parent().parent()
。 - DrewT同样也可以尝试
$(this).closest('div.classname').hide();
$(this).parents('.myClass');
var getParentNode = function(elem, level) {
level = level || 1;
for (var i = 0; i < level; i++) {
if (elem != null) {
elem = elem.parentNode;
}
}
return elem;
}
.closest()
并不总是最好的选择,特别是当您有相同元素结构时。
<div>
<div>
<div>
</div>
</div>
</div>
你可以获取父级的父级,而且非常容易:
var parent = $('.myDiv').parent();
var parentParent = $(parent).parent();
var parentParentParent = $(parentParent).parent();
等等。