2012-02-03 218 views
1

我知道有一個*.className選擇器,因爲可以有多個class = className的html元素。如果ID屬性應該是唯一的,爲什麼存在*#uniqueID選擇器?

但是,對於ID屬性應該是唯一的,爲什麼*#存在,我們什麼時候使用它?

謝謝。

+0

所以你認爲'* .className'和'.className'產生不同的結果? – 2012-02-03 20:31:48

+1

'html div {}'「也存在」,但也沒有多大意義,也沒有'* * {}'。你在哪裏看到'*#id'被使用?我的觀點是,僅僅因爲它是有效的CSS並不意味着它有意義或有用。 – 2012-02-03 20:38:54

回答

1

僅僅因爲ID應該是唯一的並不意味着它們是。您可以使用相同的ID創建多個元素,但不應該這樣做。無論如何,CSS並不在乎,唯一性的缺乏只會使用Javascript。舉例來說,如果你有這樣的:

<div id='blah'>blah</div> 
<div id='blah'>blah</div> 
<div id='blah'>blah</div> 
<div id='blah'>blah</div> 

然後jQuery('#blah')回報[ div#blah ],而jQuery('*#blah')回報[ div#blah, div#blah, div#blah, div#blah ]

jsFiddle Demo

+0

哇!現在很有趣。我想知道爲什麼jQuery像這樣實現它。在CSS中,'#foo'和'*#foo'沒有什麼區別...... – 2012-02-03 20:34:48

+0

我想用'#blah'選擇器jQuery只需要一個快捷方式並使用document.getElementById,但是'*#等等,它實際上是通過元素進行搜索。正是出於這個原因,他們也可能以這種方式實現它。 ;)由於jQuery示例,接受 – 2012-02-03 20:37:45

+0

。謝謝! – draw 2012-02-06 17:36:12

2

*匹配任何元素,不是所有元素。它被稱爲通用選擇器

因此*#myid匹配id等於myid的任何元素。在CSS中,它並不重要,它相當於#myid

Source

1

結合與ID,類通用選擇,或屬性選擇器沒有差別:#foo相同*#foo.bar*.bar相同,[baz]相同*[baz]。因此,您不希望在這些場景中使用通用選擇器。

相關問題