0

我有以下代码:

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 的情况下这个函数的等价物是什么

4

2 回答 2

2

$(products).preload();$(products)为jQuery 对象中的每个项目调用 preload 方法。它将.src页面中新创建的图像对象的属性设置为products数组中的每个字符串。我猜这是试图让浏览器在需要其他用途之前预加载图像。

您可能会发现使用本文所述的预加载函数更简单、更清晰:如何在 Javascript 中缓存图像

如果.preload()未调用,则当页面稍后或 javascript 中需要它们时,图像将需要一些时间来加载。预加载的目的是将图像放入浏览器的缓存中,这样下次需要它们时就不必通过 Internet 加载它们。

分配$.fn.preload = function() {...}只是将.preload()方法定义为所有未来 jQuery 对象的方法。在 jQueryfn中就像分配给.prototypejQuery 对象。

于 2013-09-10T16:37:54.237 回答
1

在不使用该preload功能的情况下,您可以执行以下操作:

products.forEach(function(src) {
   var img = document.createElement("img");
   img.src = src;
});

using$.fn只是添加到由 jQuery 函数/对象创建的对象可用的函数的一种方式

于 2013-09-10T16:46:45.843 回答