2012-04-19 51 views
14

這兩個jQuery語句有什麼區別?他們似乎通過獲得所有兒童div標籤來做同樣的事情。在jQuery選擇器中,直接後代(>)與後代有什麼區別?

$("#mainblock div") 
$("#mainblock > div") 
+3

我不同意這個問題被關閉,因爲「過於狹窄。「現在每個人都使用jquery,我敢打賭,大多數用戶不能給你這個問題的答案,這是如何太狹隘/本地化的? – agmin 2012-12-12 18:55:57

回答

16

$("#mainblock > div")直接子=孩子的唯一水平

$("#mainblock div") =所有孩子的+ desendents。

+1

如果你要找的節點是mainblock的父節點,最好使用>除了更精確之外,它也更快。 – Neil 2012-04-19 07:07:09

3

第一個將得到所有div S的#mainblock後裔。第二個將得到所有div S中的的#mainblock

1

第一個將選擇任何的div是`#mainblock」的孩子在任何級別。第二個會選擇任何一個直屬的div。

有關CSS >選擇器的更多信息,請參見此link,該選擇器的行爲與jQuery中的行爲相同。

3
$("#mainblock div") 

這一目標的所有div內「#mainblock」不管它是「#mainblock」直接子,或主塊左右的兒童的孩子。

$("#mainblock > div") 

這將只針對「#mainblock」的直接子DIV並忽略其他DIV。如果你只有直接的孩子,這個比你快。因爲它不是試圖在孩子的其他元素內部找到。

1

$( 「#DIV mainblock」)找到所有下#mainblock的div

$( 「#mainblock> DIV」),才發現其子

假設你有以下HTML結構:

<div id="mainblock"> 
     <div> 
     <div></div> 
     <div></div> 
     </div> 
    <div></div> 
    <div></div> 
    </div> 

然後

$("#mainblock div").length = 5 
$("#mainblock > div").length = 3