對於DIV元素,我想知道這些選擇可能的要快
$("#ELEMENT_ID")
$('div[id="ELEMENT_ID"]')
是有在僅使用DIV ID還是僅使用ID限制搜索到DIV元素之間的性能差異?
對於DIV元素,我想知道這些選擇可能的要快
$("#ELEMENT_ID")
$('div[id="ELEMENT_ID"]')
是有在僅使用DIV ID還是僅使用ID限制搜索到DIV元素之間的性能差異?
或僅限於使用其ID的搜索到DIV元素?
請注意,ID是唯一的,所以如果您在多個元素上使用一個ID,那是錯誤的。
div[id="ELEMENT_ID"]
甚至div#ELEMENT_ID
通常都是多餘的,除非您在多個頁面中包含樣式表,並且不同頁面使用不同元素的一個ID。雖然這樣做可能不是一個好主意,因爲它可能會讓某人閱讀代碼時感到困惑。
檢查jsPerf表明只是id選擇器要快得多。 http://jsperf.com/id-vs-data-id/4
有趣..顯然,第一個選擇器是比其他方式更快..謝謝+1 – Galilyou 2012-04-21 11:20:14
對於#ID
和div#ID
選擇器,jQuery的mentiones在於:
對於id選擇,jQuery使用JavaScript函數 的document.getElementById(),這是非常有效的。當另一個 選擇器連接到id選擇器(例如h2#pageTitle)時,jQuery 會執行額外的檢查,然後將該元素標識爲 匹配項。
對於div[ID=something]
選擇器我不太確定,但我懷疑它是否會比#ID
更快。我會run a performance benchmark and check the results。
PS:有上jQuery ID selector頁的有趣,注意:
與往常一樣,請記住,作爲一個開發者,你的時間通常是 最寶貴的資源。除非清楚性能需要改進,否則不要專注於優化選擇器速度 。
我對jQuery知之甚少,但是它是否真的做了所有的手動操作?它沒有檢測到「querySelectorAll」的存在並在可用時使用它,而選擇器很複雜嗎?這樣做會更快,因爲它很可能在本地代碼中實現,儘管可能會出現關於可能的實現不一致的問題。然後,無論它是否使用本地代碼,它都會變慢。 – 2012-04-21 11:09:08
@Delan:是的,我不確定jQuery/sizzle/querySelectorAll在幕後做了什麼,所以也許我應該編輯我的答案。 – 2012-04-21 11:14:42
你確定Sizzle在幕後使用gEBI嗎?我最近進行了性能測試,速度要慢幾個數量級。 – 2012-04-21 11:48:47
我不害怕表現。我更擔心可讀性以及使用定義ID'ed元素的CSS約定。 – Joseph 2012-04-21 10:57:14
如果你想通過div來限制選擇,爲什麼不用'div#id'代替? – zerkms 2012-04-21 10:58:51
http://stackoverflow.com/questions/1245598/jquery-standards-and-best-practice – 2012-04-21 10:59:22