假设我在jQuery中有一个文本节点的选择器,我该如何获得父节点?
答案 0 :(得分:4)
任何元素或文本节点都是Node
,其属性为parentNode
。您不需要jQuery,但您可以将父项转换为jQuery对象:
$(textNode.parentNode)...
答案 1 :(得分:4)
$('selector_for_your_textnode').parent()
用于jQuery对象,或
$('selector_for_your_textnode').parent()[0]
用于常规DOM对象。
您也可以使用.closest('element_you_want')
获得更大的灵活性。
正如cletus在评论中指出的那样,如果你想抓住一个实际的textNode并从那里开始向上工作,那么事情确实比vanilla jQuery选择器更有条理。可以这样做,但您必须查找nodeType 3. This answer可能有助于该部分。
答案 2 :(得分:2)
jQuery提供了一些选项来执行此操作。最基本的是:
$(selector).parent();
这将返回所选元素的直接父节点(如果选择器匹配多个元素,则返回集合中每个元素的父节点)。
下一个选项是:
$(selector).parents();
对于匹配集中的每个元素,这将返回该元素的所有父项(以及祖父母,曾祖父母等),直至并包括文档的根节点(HTML文档为<html>
) 。您可以将此选择器传递给仅获取匹配的元素。例如
$(selector).parents('div'); // only parents that are divs
最后一种方法是使用:
$(selector).closest(otherSelector);
这有点不同,因为它将返回第一个元素以匹配第二个选择器,从调用集开始。如果我有这个:
<div>
<ul>
<li>
<p id="foo">foo</p>
</li>
</ul>
</div>
我做$('#foo').closest('p')
,我将返回一个包含p#foo
的jQuery集。如果我改为$('#foo').closest('ul')
,我会按照您的预期返回<ul>
元素。
答案 3 :(得分:1)
$('.myselector').parent(); ?