解释:jQuery缓存代码
Explain: jQuery Caching Code
如果之前已经选择了某个元素,则此代码片段将从缓存中返回该元素,或者选择、缓存并返回该元素。它对于更新从未发生过显著变化的元素的内容(即,用户看到的计数器的父级,其中数字发生了变化,但父级没有)非常有用。代码如下:
var $$ = (function() {
var cache = {};
return (function (selector) {
return cache[selector] || ( cache[selector] = jQuery (selector) );
});
})();
你可以这样使用:
$$('#id')
现在。。。这到底是怎么回事?$$
如何访问jQuery选择器?它与$$
无关,从$
开始,你也可以做var foo
。$$
如何将传递到它的内容映射到selector
。我希望在$$
里面看到var selector = argumentName
。此外,在我看来,$$
似乎没有被设置为接收参数(例如,函数(输入){}),但它很容易接收?
这段小代码让我非常困惑,如果能澄清一下,我将不胜感激。谢谢
这很简单。以下是等效的代码,但在未打包的版本中,使其更加明确:
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
作为一个变量。
var $$ = (function() { // begin closure
var cache = {}; // keep in memory through closure
// The function that gets assigned to `$$`
return function(selector) {
// If the element has already been queried (exists in the cache)
// then return the element that was previously stored,
// otherwise query the new element, add it to the cache and return it
return cache[selector] || (cache[selector] = jQuery(selector));
};
})(); // end closure
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 有没有一个Javascript代码可以看到你的缓存有多满
- Ace代码编辑器:缓存模式对象
- 关闭浏览器时清除缓存的代码
- 反缓存代码到 jquery getJson
- 解释:jQuery缓存代码
- 我的JS代码如何在没有明确缓存DOM元素的情况下访问它们
- HTML代码的缓存部分-ASP.Net
- Drupal |缓存页面中未缓存的JS cookie/跟踪代码算法
- 这个jQuery代码是错误的,需要我不断清除缓存..为什么?
- 我修改了我的PHP代码,但是浏览器中显示的结果没有改变.是否有某种“缓存”?PHP中的错误
- 如果重复多次,JavaScript是否缓存/优化代码
- 强制浏览器重新加载没有服务器端代码的缓存
- 如何让用户拥有最新的非缓存代码
- 如何清除缓存后流星热代码推送