2009-11-09 45 views

回答

8

parent > child選擇器只會尋找直接子元素,而ancestor descendant將尋找任何後代元素。

例如,下面的標記:

<div class="foo"> 
    <div> 
    <div class="bar"></div> 
    </div> 
</div> 

$('.foo > .bar')將找不到.bar元素,而$('.foo .bar')確實發現它,因爲.foo不是來自.bar直接孩子,但它是一個後代。

0

在這個例子中,是的,他們會返回相同的東西。

1

這不起作用,因爲您沒有指定要查找的元素。您需要將#e> #f或#e #f抓取您的ID。

如果這是一個真實的場景,#e> #f將只能找到孩子,沒有嵌套在下面。 #e #f將抓取任何id =「f」元素,無論它們嵌套在結構中多遠。

3

首先,我假設你的意思是$('#e > #f')$('#e #f')

在你的例子中,他們都會返回相同的東西。不同的是,$('#e #f')也將在這種情況下返回一個div:

<div id="e"> 
    <div id="g"> 
    <div id="f"></div> 
    </div> 
</div> 

$('#e > #f'),而另一方面,會不會有什麼回報,因爲它只會選擇其中的直接子等元素元素。

+0

你的假設是正確的,因爲這是我最初發布的內容的逐字。謝謝您的回答。 – 2009-11-10 00:31:57

+0

啊,對不起 - 我不知道爲什麼,我以爲你發佈了'$('e> f')'。我一定有誤讀。 – igul222 2009-11-10 02:48:44

0

是的,因爲HTML中沒有ef元素,它們將始終返回空的jQuery對象。

如果該元素是id="e"元素的直接後綴,則調用$('#e > #f')將返回元素id="f"

電話$('#e #f')將返回元素與id=f,如果它是在id="e"元素內的某個地方。

編輯:
注意:由於問題在我回答後進行了編輯,第一句不適用於問題目前的樣子。

+0

閱讀'有了這個標記'下的第一部分:';然後改述你的第一句話。 – 2009-11-10 00:32:46

+0

@Alexsander:我明白了,我在寫完答案後改變了你的問題。 – Guffa 2009-11-10 01:25:19