无论您是否使用 jQuery,在适当的地方缓存 DOM 元素当然是明智的。
但是这个问题让我想到也许我们应该有一个插件来帮助解决这个问题。我四处寻找,一个也找不到。
所以我很快就写了一篇。这是一个延迟加载的 jQuery 选择器......
(function($){
var cachedObjects = new Array();
$.lazy = function(selector) {
if (typeof selector != "string" || arguments.length > 1)
return $.apply(this, arguments);
var o = cachedObjects[selector];
if (o == undefined)
{
o = $(selector);
cachedObjects[selector] = o;
}
return o;
};
})(jQuery);
你会这样使用它...
$.lazy('.my-nav').show();
如果我忽略了什么,请告诉我。但我相信只要您选择的元素是静态的并且永远不会动态添加或删除,这将是很好的选择。
更新
我已经更改了代码以提高效率。而且,我已经return $(selector)
在选择器不是字符串的时候添加了一行。因此,只有在选择器为字符串时,缓存才能起作用。
更新#2
现在return $.apply(this, arguments)
,根据 jfriend00 的建议,您不只是简单地传递一个字符串。