2014-02-11 41 views
0

我有一個ID與div - #calculator1jquery查找方法vs傳統選擇器

我想要在該div中的目標類 - 例如一個名爲鍵的類。 我正在使用一種名爲「setToBlank()」的虛構方法

以下方法中哪些會被認爲是最佳實踐?

1:$("#calculator1 key).setToBlank()

或存儲ID在緩存可變

_calculator = $("#calculator1"); 
_calculator.find("key").setToBlank(); 

我使用它多次,所以將其保存在緩存的變量是合乎邏輯的。 我只是不確定.find是否更低效,因爲我會反覆調用它。

+1

我必須誠實......用任何一種方式和你/你的用戶將不會**注意到差異。人們對性能太過擔心,而且總是令人困惑,因爲99%的時間,性能不是你應該擔心的 - 可維護的代碼。哪種方法對你更有意義?我會說用你認爲合適的。 – FastTrack

+0

最好的情況取決於情況。 ***在這個非常特殊的情況下***,由於'$(「#id」)'有多快,所以最好使用.find。 http://jsperf.com/jquery-find-vs-children-and-id-selector/10沒有*一般的最佳實踐*,這將取決於從情況而定。除非您確實遇到性能問題,否則不要擔心這種性能和b性能。即使知道.find更快,我會使用選擇器。 –

回答

2

內側類鍵的所有項目如前所述在Learn jQuery中,.find()的版本更快:

.find()方法是更快,因爲第一選擇是處理 不通過滋滋聲選擇器引擎去 - 只有ID-選擇 使用的document.getElementById()來處理,這是非常快 ,因爲它是原生瀏覽器。

旁註。 find("key")搜索key標記。對於類使用find(".key")

0

我不知道有關的.find()與jQuery選擇的效率,但你必須在你發佈的代碼中的錯誤。

$("#calculator1 key).setToBlank(); 

這將尋找#calculator1內的所有鍵標籤,你需要有這樣的:

$("#calculator1 .key").setToBlank(); 

這將選擇#calculator1

0

我覺得最表演是:

var field =$(document.getElementById("calculator1")); 
field.find("key").setToBlank(); 

,如果你想的工具來測試性能:http://jsperf.com/