我對使用jQuery非常新,因此我相處得很好,以獲得預期的結果,但這裏有一個關於性能的問題,對此我不確定答案:jQuery選擇器性能:通過標識符與標識符ID標記
假設預期的選擇實際上是<textarea>
,以下哪個選擇器是最高性能的?
$("textarea[id='someID']");
$("#someID");
Thx提前!
我對使用jQuery非常新,因此我相處得很好,以獲得預期的結果,但這裏有一個關於性能的問題,對此我不確定答案:jQuery選擇器性能:通過標識符與標識符ID標記
假設預期的選擇實際上是<textarea>
,以下哪個選擇器是最高性能的?
$("textarea[id='someID']");
$("#someID");
Thx提前!
$("#someID");
會更快
因爲它基本上採用了非標準的javascript document.getElementById
功能
[Evidence?](http://jsperf.com/) –
@ PaulD.Waite如果證據很重要,請設置perf。這是一個衆所周知的事實,jQuery在內部使用document.getElementByID來傳遞id。 –
@Paul看看jQuery源代碼中的'Sizzle'功能 –
中的第二選擇會更快,因爲它直接映射到document.getElementById
您可以檢查結果here
對於最快的結果,你必須包裝的js的getElementById在jQuery對象:
$(document.getElementById('myid'));
由於通過ID選擇單個元素是一個性能問題......':P' –
就我而言,這確實不是性能問題......但是在開始瞭解最佳實踐之前,是否應該等到性能問題出現? – kyiu
大膽地使用'$('#foo')',這絕不是問題。在循環中執行查詢時會出現性能問題。 (緩存查詢,'var $ elems = $('。elems');',然後在循環中使用'$ elems'。)另一個性能問題是大頁面上的全局查詢。如果你的'.elems'元素是'#foo'元素的後代,那麼$('。elems','#foo')'會比全局的$('。elems')'查詢執行得更好。此外,避免長連鎖,'$('。thing','#wrapper')執行比'$('#wrapper ul li .thing')更好''。我想,這幾乎涵蓋了它。 ':)' –