2013-04-08 48 views
0

我想知道,如果我在一個調用jQuery函數中分組一些id的性能改進,或者逐行調用它(idid )。每個ID調用jQuery函數或更好的分組到一個調用

眼下是這樣的:

$('#culetType').combobox(); 
$('#girdle').combobox(); 
$('#polishLinesIntensity').combobox(); 
$('#burnmarksIntensity').combobox(); 
$('#scratchesIntensity').combobox(); 
$('#damagesIntensity').combobox(); 

所以會是一個性能的提高,如果我DIT這樣的:

$('#culetType, #girdle, #polishLinesIntensity, #burnmarksIntensity, #scratchesIntensity, #damagesIntensity').combobox(); 

除了這個事實,它不愉快的閱讀。

我知道我可以給所有那些idclass,這隻會讓我只有一個電話。

那麼它會是一個性能提升或不?

+0

:選擇由類比使用ID選擇慢得多!如果你只是使用它一次,它可能是好的。 – Imperative 2013-04-08 12:21:20

+0

使用ID將總是快於類 – 2013-04-08 12:24:55

+1

像[jsperf.com](http://jsperf.com/)這樣的站點允許您創建基準來可靠地測量如何切換到類選擇器將影響特定代碼的性能,具體取決於在瀏覽器上。 – 2013-04-08 12:25:44

回答

1

在較新的瀏覽器中,使用單個選擇器會稍微提升性能,因爲jQuery使用內置方法運行選擇器。創建一個jQuery對象並對其中的所有元素執行操作比創建一堆jQuery對象稍快。

在較老的瀏覽器中,解析包含單個id的選擇器會稍微快一些,但創建多個jQuery對象會稍微慢一點,所以這些方法的性能大致相同。

+0

基於Frédéric&Arun的評論創建的,我嘗試過使用jsperf:result和你說的一樣。 http://jsperf.com/single-vs-multiple-call – Mark 2013-04-08 12:45:13

1

據我所知,寫作$()每次都會調用DOM。因此,即使在你們所說的一些元素更好地做到:的

el = $('#myEl'); 
el.firstAction(); 
el.secondAction(); 

代替

$('#myEl').firstAction(); 
$('#myEl').secondAction(); 

所以我想打一個電話,與$('...,...,...')的運行速度更快,但它會是小的推動作用。

但是,你要記住,在一個呼叫的情況下,你不能做這樣的事情:

$('#culetType').combobox(); 
$('#girdle').combobox({property: false}); 
$('#polishLinesIntensity').combobox(); 
其實
+0

這次不需要參數;-),但感謝您的信息。 – Mark 2013-04-08 12:51:29