2011-06-08 51 views
2

我正在審查的代碼,發現

$("#item1 #item2") and $("#item1>#item2") 

可以互換使用。有沒有什麼不同,還是一樣的?

+1

什麼是HTML看起來就像該代碼?多個'#item1's?如果有,那麼它是無效的。 – Eric 2011-06-08 17:15:38

+0

您可能想了解[CSS選擇器](http://www.w3.org/TR/css3-selectors/#selectors)。在第一個選擇器中有一個後代組合器,在第二個選擇器中有一個子組合器。 – 2011-06-08 17:17:09

+0

@ Eric-這些項目是獨一無二的......我應該剛剛給出了使用類而不是id的例子......無論如何採取了一些措施。 – Raja 2011-06-08 17:23:21

回答

5

兩者將匹配

<div id="item1"> 
    <div id="item2"> 
    </div> 
</div> 

但是隻有第一個將匹配

<div id="item1"> 
    <div> 
     <div id="item2"> 
     </div> 
    </div> 
</div> 

第一表達式使用descendant selector。第二個表達式中的>符號是child selector。兩者都是標準的CSS選擇器。

但是,由於id s 必須是是唯一的,兩者都過於複雜。相反,你應該只使用$('#item2')

+1

關於在選擇器中不使用多個ID的好處 - 完全沒有意義。 – Orbling 2011-06-08 17:16:57

+0

@Orbling:除非當然,如果你在每一頁上執行相同的jQuery,你有時不需要匹配。 – Eric 2011-06-08 17:19:12

+0

@Orbling,我不同意。如果您在.js文件中撰寫適用於多個頁面的文件,如果一個頁面具有#page1 #item而另一個頁面具有#page2 #item,則如果您只想定位一個頁面,則需要兩個ID。所以有一點指向多個ID選擇器。 – 2011-06-08 17:21:14

0

>的符號是指「僅包括屬於該元件的直接子元素」。因此,如果您只想選擇子項爲#item1的子項,請使用它,否則使用第一個選項。

相關問題