2012-06-25 51 views
1

我正在處理一些JQuery代碼,我有一個關於緩存選擇器的問題。我有一個在滾動時調用的特定函數(因此需要快速)。我嘗試了初始化過程中緩存在函數中使用的選擇,像這樣:JQuery緩存選擇器 - 我誤解了嗎?

var myElement = $('#myElement'); 

function onScroll() 
{ 
    myElement.whatever(); 
} 

當我配置文件在Firebug的代碼,我看到了jQuery選擇功能被作爲通常被稱爲整整5倍的onScroll功能(我在函數中使用了5個不同的選擇器),並負責大部分執行時間。

1)那麼究竟是以這種方式緩存的好處呢?我不是嘲笑:)

2)我明白選擇器需要重新運行的情況下,DOM的變化,但有什麼辦法來緩存單個選定的對象,使該功能不需要每次運行,同時停留在JQuery中?

+0

有沒有新的選擇,每一個用途,什麼是「正在做什麼......」? – gdoron

+0

1次調用'outerHeight',1次調用'outerWidth',1次調用'css'作爲getter,2次調用'css'作爲setter。 – carpat

回答

2
  1. 當你正在使用的變量myElement您使用的是包含在創建對象所發現的元素引用一個jQuery對象。當您使用jQuery對象時,不會重新運行選擇器來更新元素集。

  2. 是的,你完全按照你所示。

+0

好吧,我想我看到的功能是從別的東西。 – carpat