我在代碼中找到它,不知道使用*.class
選擇器的選擇器在.class
選擇器上有什麼用處。是否有任何理由在'.class'上使用selector'* .class'?
回答
無論在jQuery(Sizzle)選擇器上下文還是CSS選擇器上下文中都沒有意義。在元素匹配和特異性方面,*.class
和.class
都是等價的。
*
字符僅在被自身用於引用任何元素時纔有意義;這意味着你使用任何其他簡單的選擇器而沒有類型選擇器。 即使那麼,如果有的話,您很少會發現自己需要將事件掛鉤或操作DOM上每個元素的屬性。
如果你打算使用類,僞類,ID等,那麼沒有通用選擇器的地方,因爲選定的元素將被相應地過濾掉。
此外,這裏是一個使用*
有其他選擇的一個缺點,從jQuery documentation報價:
注意:所有或通用,選擇是極其緩慢的,在使用時其本身除了。
這裏還有什麼Selectors spec說:
如果*代表的通用選擇器(即沒有命名空間前綴)是不是一個sequence of simple selectors選擇的唯一部件或後面緊跟着一個pseudo-element,那麼*可能被忽略,並且通用選擇器的存在隱含。
實例:
*[hreflang|=en]
和[hreflang|=en]
是等價的,*.warning
和.warning
是等價的,*#myid
和#myid
是等價的。
它們大致相當 - 星號僅進一步指定將該選擇應用於哪個對象。
.class // Selects all of the specific class
*.class // Selects all of the specific class - where * can be a div, li, etc.
沒有,沒有任何理由指定*.class
超過.class
*
是通配符,並表示「這適用於任何」不過這只是本機選擇行爲。
但是,它可能已被人誰試圖在面前明確書面補充說:
不要選擇特定元素類型,但匹配所有元素類型
但是,如果您的內部正常的代碼組織的類型爲這隻成立:
$('div.class')
$('a.class')
$('a:first')
等
就沒有優勢獲得了 - 我覺得這是一個性能問題,如果您使用其它選擇通配符:
比注意:所有或通用, 選擇是非常緩慢,除了自己使用 。
其他 - 沒有區別
我認爲是這樣,但我認爲在這種情況下,jQuery會優化它。 http://jsperf.com/starsss,因爲這個調用只是'document.getElementsByClass'的基本包裝。 – Yahel 2011-03-22 15:40:43
- 1. UIButton UIButtonTypeCustom error.Unrecognized selector sent to class
- 2. 是否有任何理由使用[:over @:?
- 3. 是否有任何理由使用isset()?
- 4. 是否有任何理由使用System.Uri?
- 5. 是否有任何真正的理由在Uitextfield上使用UiSearchBar?
- 6. 何時使用class :: function或class->函數,是否有首選方法?
- 7. 「Class myclass = Class()」是否浪費資源?
- 8. (「Child Class」是「Parent class」)
- 9. 是否有任何理由使用等待和異步馬上?
- 10. 是否有任何理由在C#中使用私有屬性?
- 11. caseElass(i)`case-class是否使用反射?
- 12. isJavaType(Class class)or isUserType(Class class)?
- 13. 爲什麼我不能在Laravel Dusk中使用body class selector?
- 14. 任何理由更喜歡is.character比class(object)==「character」?
- 15. 是否有任何理由使用Apache HashCodeBuilder而不是Objects.hash?
- 16. 是否有任何理由在JavaScript中使用Object.create()或new?
- 17. 是否有任何理由在Android中使用support.v4庫?
- 18. 是否有任何理由在vb6中使用DHTML或IIS?
- 19. 是否有任何理由在VBA中使用ENUM?
- 20. 是否有任何理由在Swift中使用選擇器?
- 21. 是否有任何理由在java中使用null == value條件?
- 22. 是否有任何理由在兩個MemoryStream之間使用CopyToAsync
- 23. 是否有任何理由在微軟ISV中使用TFS 2010?
- 24. [class * =「span」]在twitter引導中是否還包含.row-fluid [class * =「span」]?
- 25. 套用class&ng-class
- 26. 是否有可能獲得由Class :: DBI生成的SQL語句?
- 27. 是否有任何理由Object.freeze函數?
- 28. C++:是否有任何理由使用uint64_t,而不是size_t
- 29. 是否有任何理由使用SGML而不是XML?
- 30. Typescript的/ ** @class * /是否有目的?
重新性能,我認爲這是一個主要的區別,但我認爲jQuery在這種情況下優化它。 jsperf.com/starsss是一個基本的例子。我猜是因爲這個調用只是document.getElementsByClass的一個基本包裝? – Yahel 2011-03-22 15:42:55
@yc:有時jQuery可能會把它交給'getElementsByClass','getElementById'或'querySelectorAll'。儘管如此,無論是由jQuery還是由瀏覽器的選擇器引擎處理,「*」仍然在顯微鏡下仍然非常慢。 – BoltClock 2011-03-22 15:44:43
是的,完全。根本沒有理由在這裏添加'*'。想都不用想。 (+1) – Yahel 2011-03-22 15:53:31