我有以下代码:
var products = [];
$('.mCSB_container').children('li').each(function () {
products.push($(this).data("full-image"));
});
$.fn.preload = function() {
this.each(function(){
$('<img/>')[0].src = this;
});
}
$(products).preload();
这个预加载功能有什么作用?它是否遍历产品数组然后将src设置为此?但是在这种情况下是什么..如果不使用$ .fn
,这个函数的等价物是什么答案 0 :(得分:2)
$(products).preload();
为$(products)
jQuery对象中的每个项调用preload方法。它将页面中新创建的图像对象的.src
属性设置为products
数组中的每个字符串。我猜这是尝试让浏览器在需要其他用途之前预先加载图像。
您可能会发现使用预载功能更简单,更清晰,如本文所述:How do you cache an image in Javascript。
如果未调用.preload()
,则图片将在页面稍后或稍后在javascript中需要时加载。预加载的目的是将图像放入浏览器的缓存中,这样就不必在下次需要时通过互联网加载它们。
赋值$.fn.preload = function() {...}
只是将.preload()
方法定义为所有未来jQuery对象的方法。在jQuery fn
就像是在向jQuery对象的.prototype
进行协助。
答案 1 :(得分:1)
不使用preload
功能,您可以这样做:
products.forEach(function(src) {
var img = document.createElement("img");
img.src = src;
});
使用$.fn
只是添加到jQuery函数/对象创建的对象可用的函数的一种方法