这snippet of code如果先前已选择元素,则将从缓存中返回一个元素,或者选择、缓存并返回该元素。它对于更新从未发生显着变化的元素的内容很有用(即,用户看到的计数器的父级,其中数字发生变化但父级没有)。代码如下:
var $$ = (function() {
var cache = {};
return (function (selector) {
return cache[selector] || ( cache[selector] = jQuery (selector) );
});
})();
你可以这样使用它:
$$('#id')
现在……这到底是怎么回事? $$
如何访问 jQuery 选择器?它与以 $
开头的 $$
无关,您也可以使用 var foo
。 $$
如何将传递给它的内容映射到 selector
。我希望在 $$
中看到 var selector = argumentName
。另外,在我看来 $$
似乎没有设置为接收参数(例如 function(input){} ),但它很容易接收参数吗?
这一小段代码让我非常困惑,如果能清晰一些,我将不胜感激。谢谢!
最佳答案
这很简单。这是等效的代码,但在解压缩版本中以使其更明确:
function generateCachingJQuery() {
var cache = {};
function queryFunc(selector) {
if (cache[selector]) {
return cache[selector];
}
else {
cache[selector] = jQuery(selector); //same as $(selector)
return cache[selector];
}
}
return queryFunc;
}
var $$ = generateCachingJQuery();
如果您注意到,首先您有一个匿名函数 - 我在这里命名为 generateCachingJQuery
- 它返回 $$
最终成为的函数。这样做是为了让内部函数(此处名为 queryFunc
)可以访问 cache
变量。其余的只是一个单行文件,我在这里解压它以使其更清楚它在做什么。
编辑:需要明确的是,$$
在上面的代码中最终变成了 queryFunc
,而不是 generateCachingJQuery
。请注意,queryFunc
将 selector
作为变量。
关于javascript - 解释: jQuery Caching Code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554618/