2016-05-31 51 views
9

請問哪種效率更高?是否將jQuery元素存儲在變量中更高效?

var myElement = $("#the-name-of-my-element") 

myElement.doSomethingOnce; 
myElement.doSomethingTwice; 
... 
myElement.doSomethingTenTimes; 

$("#the-name-of-my-element").doSomethingOnce; 
$("#the-name-of-my-element").doSomethingTwice; 
... 
$("#the-name-of-my-element").doSomethingTenTimes; 

我有一個頁面,其中html元素具有與JS許多不同的和有時反覆相互作用所以我想知道如果存儲元件在一個變量中防止多個jQuery的「查詢」。

由於我的項目是一個網絡應用程序,我很想調整我的瀏覽器。

回答

5

緩存節點總是一個好習慣。 JS引擎爲定位節點所做的工作量要比用來存儲節點的內存要貴(當然除非存儲大量的DOM樹或其他東西)。

所以獲獎者是:

var myElement = $("#the-name-of-my-element") 

myElement.doSomethingOnce; 
myElement.doSomethingTwice; 
... 
myElement.doSomethingTenTimes; 
3

每次執行dom元素搜索都會使用$("#the-name-of-my-element")

使用var myElement = $("#the-name-of-my-element") dom元素搜索只執行一次,然後存儲到變量。所以下次它將被更快地訪問,而不需要額外的函數。

因此,總而言之 - 如果您必須多次使用元素,則將元素分配給變量比每次搜索都更有效。

4

如果你是做多任務,相同的元素比它更好的將其緩存到變量,因此JS不會在每次調用重新選擇要素。

此外它更容易維護你的代碼 - 例如如果你想改變選擇器,你必須在一個地方改變它,而不是通過代碼和搜索它。

1

$("#the-name-of-my-element") jQuery遍歷整個dom樹來查找適用於選擇器規則的所有元素。

因此,將結果放入一個變量中,並且使用該變量而不是使用相同的選擇器幾次會更有效。注意:如果被調用的方法(doSomeThing..())中的一個添加了具有相同選擇器的新元素,則該元素將不會被處理。只要它是一個ID,罰款,但使用類(".someclass"

相關問題