在jQuery中,選擇器$('[id = foo]')效率低於$('#foo')?
6
A
回答
16
簡而言之:是!
長的故事(仍低於實際)
$('[id=foo]')
使用灒(CSS查詢引擎)來選擇元素,而
$('#foo')
直接調用
getElementById
。
爲了有一個很長的故事,在這裏我們去:$('[id=foo]')
是$('*:[id=foo]')
的代名詞,它使用通用選擇。這意味着,它會在您的標記中查詢所有節點,然後查看其中哪些具有id === foo
(然後希望僅匹配一個元素,ID =唯一)。當然,這是昂貴的,相當昂貴。這就是爲什麼你永遠不會寫這樣的選擇器! 總是完全符合這個如果可能的話,就像$('span:[id=foo]')
1
是的。
jQuery中最快的選擇是ID選擇$(「#富」),因爲它直接映射到一個本地JavaScript函數getElementByID()的,那麼你jAndy
相關問題
- 1. jQuery:重寫$('foo + bar')選擇器以使用$ foo變量
- 2. mod_rewrite/foo到/index.php?id=foo AND/foo/foo2到/index.php?id=foo/foo2
- 3. 是`foo as? Foo「在kotlin中完全等價於foo?foo?
- 4. jQuery選擇器如何「ID爲foo的第一個元素」?
- 5. foo = foo有意義嗎?
- 6. jQuery UI選擇 - 幫助效率低下
- 7. 其是優選的:FOO(無效)或FOO()在C++
- 8. typedef Foo <> Foo編譯但它有效嗎?
- 9. var foo = foo ||警報(FOO);
- 10. jQuery選擇器,效率
- 11. 「struct foo *」和「foo *」之間的區別foo是一個struct嗎?
- 12. 如何篩選{「foo」:「bar」,「bar」:「foo」} grok只獲取foo字段?
- 13. + foo + vs。 foo。差異在PHP?
- 14. 哪個`if(!isset($ foo)OR(isset($ foo)AND $ foo == $ bar))`或`if(!isset($ foo)OR $ foo == $ bar)`更好?
- 15. 在Foo中聲明對象Foo?
- 16. 爲什麼「foo = foo || {};」不行?
- 17. Foo無法投射到Foo
- 18. 爲什麼example.com/foo/有效,但example.com/foo沒有?
- 19. jQuery get #foo的outerWidth()
- 20. jQuery效率低下?
- 21. CakePHP從子查詢中選擇(從SELECT(...)中選擇foo)
- 22. var foo =(function(){...})(); ... FOO()不工作
- 23. 更快$ foo? $ foo的:「棒」
- 24. 如何選擇具有「foo」類的td?
- 25. R:apt-get install r-cran-foo與install.packages(「foo」)
- 26. jquery選擇器的問題和效率
- 27. mid()= foo在VBS中?
- 28. IBActions富和Foo:
- 29. Shell腳本:「本地foo」和「本地foo =」有區別嗎?
- 30. 可以區分foo [.2]和foo的Mathematica函數foo [.20]
啊繼承人子的問題 - 是'$ ('span:[id = foo]')'只是'$(span#foo)'或者一個不同的選擇器的簡寫? – HurnsMobile 2010-08-18 17:44:12
@HurnsMobile:完全沒有。 '$( '跨度:[ID = FOO]')'。我其實會建議在這裏查看jQuery init代碼。 jQuery確實將一些選擇器表達式解析爲直接調用'getElementById'或'getElementsByTagName',我認爲'$(span#foo)'就是其中之一。所以它比'$('span:[id = foo]')'快得多。這種表達會進入Sizzle,並且明顯需要比上述方法中的一種更長的時間。 – jAndy 2010-08-18 20:06:03
非常豐富,非常感謝。我考慮使用除$(「#foo」)之外的東西來定位一個id的原因是因爲我定位的id有一段時間,這顯然是有問題的,因爲jQuery會將其解釋爲一個id和一個類。所以通過使用$(「[id = Address.State]」),我可以解決這個問題。解決這個問題的另一種方法是在$(「#Address \\。State」)中加倍逃避期限,但我認爲雙重轉義可能不太可讀。但是,考慮到您指出的效率損失,無論如何我可能會使用它。 – jbyrd 2010-08-18 21:18:41