2010-05-21 51 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>元素,就像你所期望的那樣。

相關問題