2011-04-16 77 views
0

我想知道下面的例子中選擇器「$ cacheA」是否會緩存在頁面加載?關於JavaScript中的緩存問題/ jquery

// MY JQUERY FUNCTION/PLUGIN 
(function($){ 
$.fn.myFunction = function() { 

var $cacheA = this, 
$cacheB = $cacheA.children(), 
$cacheC = $cacheB.eq(0); 
$cacheD = $cacheA.parent();  

$cacheD.click(function(){ 

$cacheA.toggle(); 
$cacheB.fadeIn(); 
$cacheC.slideUp(); 

}); 

}; 
})(jQuery); 
// END JQUERY FUNCTION/PLUGIN 



$(window).load(function(){ 

$('#mySelector').myFunction(); 

}); 

難道是任何理由這樣做:

$(window).load(function(){ 

var $mySelector = $('#mySelector'); 

$mySelector.myFunction(); 

}); 
+0

如果緩存$ cacheA我假設$ cacheB,$ cacheC和$ cacheD也將在頁面加載時被緩存? – Hakan 2011-04-16 13:41:36

+0

這個問題沒有意義。你是什​​麼意思,「緩存」? – Pointy 2011-04-16 13:46:10

+0

對於「緩存」我的意思是:通過將選擇器保存在變量中,瀏覽器只需要做一次厄運。如果選擇器被多次使用,這將加速腳本。 – Hakan 2011-04-16 14:02:40

回答

2

如果,你的 「負荷」 處理程序中,你做很多jQuery的操作以 「$ mySelector」,然後保存在一個變量中是一個好主意。然而,在你的例子中,你只使用一次這個值,所以它根本沒有任何區別。

+0

Thansk爲您解答。 $ mySelector將用於jquery函數中。請參閱「var $ cacheA = this」。它會有什麼不同嗎? – Hakan 2011-04-16 14:35:47

+1

+1使用相同的選擇器反覆遍歷DOM時,緩存纔有價值。 – 2011-04-16 14:35:51

+0

否 - 如果保存'$('#something')'值,那麼您可以重複使用它多次。在你的jQuery插件「myFunction」中,它將是'this'的值。但是,變量「$ cacheB」,「$ cacheC」等都是局部變量,並且每次調用「myFunction」時都會重新計算它們,即使您使用相同的起始jQuery對象調用它( 「$ mySelector」)。 – Pointy 2011-04-16 14:37:48

0

Firstable,$ cacheA和其他裏面的點擊函數將是未定義的。

$cacheD.click(function(){ 

$cacheA.toggle(); 
$cacheB.fadeIn(); 
$cacheC.slideUp(); 

}); 

其次,

$.fn.myFunction = function() { 

var $cacheA = this, 
$cacheB = $cacheA.children(), 
$cacheC = $cacheB.eq(0); 
$cacheD = $cacheA.parent(); 
} 

所以,$('selector').myFunction()之後我怎麼能使用$ cacheB,$ cacheC和$緩存?他們將在哪裏存儲?