2010-05-21 53 views

回答

4
$('selector_for_your_textnode').parent() 

一个jQuery对象,或

$('selector_for_your_textnode').parent()[0] 

为常规的DOM对象。

您也可以使用.closest('element_you_want')以获得更大的灵活性。

正如cletus在评论中指出的那样,如果你想抓取一个实际的textNode并从那里向上工作,事情确实比一个香草的jQuery选择器有点复杂。它可以完成,但你必须寻找节点类型3. This answer可能会帮助该部分。

+1

恩,你不能用jQuery选择器获取文本节点。 – cletus 2010-05-21 04:23:11

+0

是的,这一点确实让它变得更加混乱。我正在编辑。 – 2010-05-21 05:06:59

4

任何元素或文本节点是Node,它具有parentNode属性。你不需要jQueryfor这一点,但你可以把父成jQuery对象:

$(textNode.parentNode)... 
1

你的意思是像

$('.myselector').parent(); ? 
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'),我会回来一个jQuery设置包含p#foo。如果我反而做$('#foo').closest('ul'),我会回到<ul>元素,就像你所期望的那样。

相关问题