2011-04-16 103 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和$缓存?他们将在哪里存储?