只是在這裏拋出這個問題,因爲它讓我思考今晚。帶標籤vs無標籤在jQuery中的選擇
我聽說在此之前,它是方式更好包括HTML標記成時,你可以,因爲它通過,以及踢了選擇性能,告訴jQuery的什麼HTML標籤來尋找這樣它不jQuery選擇」不要搜索文檔中的所有內容。 (即去$('div.someclass')
而不是$('.someclass')
時,你可以。)
我的問題是,如何真現,這是,使用jQuery(目前1.6.1)的最新版本?
我甚至不確定這個概念是否出現在Sizzle之前(甚至不確定Sizzle是否有助於jQuery在這方面表現更好)。
當然,良好的編碼習慣就決定了我包括HTML標記時,我可以只是爲了讓事情說清楚,但有一個很灰色地帶對我來說,當我更願意去
$('.someclass')
只是因爲我不想去
$('div.someclass, a.someclass, p.someclass, img:nth-child(3n+2).someclass')
完全理論只有花花公子。我知道我可以去$('div,a,p,img:nth-child(3n+2)').filter('.someclass')
。
編輯
在一個有點相關的說明,我繼續與標籤製作perf tests VS無標籤的選擇(感謝Raynos),以及看似無標籤的選擇是顯著比更有益FF和Chrome上的標籤選擇。在IE8上,帶標籤的速度還是比較快,但是從邊緣看起來,它在其他瀏覽器上的替代品已經完全黯然失色。嗯。
'.filter(」。SomeClass的)' – BoltClock 2011-05-23 18:50:45
@BoltClock〜噢,好抓。 +1:D – 2011-05-23 18:52:38
我會*認爲*取決於瀏覽器。如果有一個本地選擇器引擎或getElementsByClassName,那麼不指定標籤名稱可能會更快,因爲每個元素需要檢查的次數較少。如果OTOH,jQuery沒有本地代碼來回退,那麼它會更快,如果它可以首先縮小與getElementByTagName的搜索範圍。 – Quentin 2011-05-23 18:54:24