2012-11-07 68 views
0

我對使用jQuery非常新,因此我相處得很好,以獲得預期的結果,但這裏有一個關於性能的問題,對此我不確定答案:jQuery選擇器性能:通過標識符與標識符ID標記

假設預期的選擇實際上是<textarea>,以下哪個選擇器是最高性能的?

  • $("textarea[id='someID']");

  • $("#someID");

Thx提前!

+1

由於通過ID選擇單個元素是一個性能問題......':P' –

+0

就我而言,這確實不是性能問題......但是在開始瞭解最佳實踐之前,是否應該等到性能問題出現? – kyiu

+1

大膽地使用'$('#foo')',這絕不是問題。在循環中執行查詢時會出現性能問題。 (緩存查詢,'var $ elems = $('。elems');',然後在循環中使用'$ elems'。)另一個性能問題是大頁面上的全局查詢。如果你的'.elems'元素是'#foo'元素的後代,那麼$('。elems','#foo')'會比全局的$('。elems')'查詢執行得更好。此外,避免長連鎖,'$('。thing','#wrapper')執行比'$('#wrapper ul li .thing')更好''。我想,這幾乎涵蓋了它。 ':)' –

回答

7

$("#someID");會更快

因爲它基本上採用了非標準的javascript document.getElementById功能

+1

[Evidence?](http://jsperf.com/) –

+0

@ PaulD.Waite如果證據很重要,請設置perf。這是一個衆所周知的事實,jQuery在內部使用document.getElementByID來傳遞id。 –

+0

@Paul看看jQuery源代碼中的'Sizzle'功能 –

4

選擇由id始終是最快的方法,因爲它使用的JavaScript自己getElementById實施。

JSPerf Demo

在這裏我的機器(Win8的,FF16.0.2)屬性選擇較慢93%!

1

中的第二選擇會更快,因爲它直接映射到document.getElementById

您可以檢查結果here