2

我在 Nettuts 上的教程评论(由 James 撰写)之后得到了这段代码,我想实现它。

预加载图像的教程方法很冗长,但我喜欢 James 的缩短版本,但是,我尝试过实现它,但我没有做对。

看来我需要先设置我的数组,循环遍历该数组,然后创建图像对象并加载它们。然而,当我检查我的 Firebug 时,我没有看到任何图像加载到缓存中。

$(function(){
      var imgArray = ['bghome01.jpg', 'bghome02.jpg', 'bghome03.jpg'];
        $.preload = function (imgArray) {
            $.each(imgArray, function () {
                alert(imgArray);
                (new Image()).src = 'Images/' + this;
            });
        };
    });

我会很感激帮助!

4

3 回答 3

2

在这里,您定义了一个函数,但没有调用它:

$.preload = function (imgArray) {

如果您只想加载图像,可以将其缩小为:

$(function(){
  var imgArray = ['bghome01.jpg', 'bghome02.jpg', 'bghome03.jpg'];
  $.each(imgArray, function () {
    (new Image()).src = 'Images/' + this;
  });
});

或者,你可以用你原来的方法来做,函数定义可以在外部文件中,但在页面中你需要调用它,像这样:

var imgArray = ['bghome01.jpg', 'bghome02.jpg', 'bghome03.jpg'];
$.preload(imgArray);

我认为这里的混淆来自imgArray数组参数的名称,但它们是两个独立的东西,如果你给参数赋予$.preload不同的名称,它可能不会那么混乱。

于 2010-06-29T11:23:48.433 回答
0

我的猜测是您没有保留图像对象,因此垃圾收集可能会在加载图像之前将它们丢弃。

有关一些代码,请参阅本文:http: //engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript

请注意,jQuery 没有任何魔法。最后都是 JavaScript,所以你的代码一定有问题。因此,如果让图像对象保持活动状态没有帮助,也许这篇文章会为您指明正确的方向。

于 2010-06-29T08:39:53.153 回答
-1

如果使用浏览器,我只会加载页面上的图像,所以我怀疑他会发生这种情况,因为您从未将图像添加到 DOM。尝试设置创建一个新的 img-tag 并将style="visibility:hidden"其添加到 DOM。

于 2010-06-29T07:14:26.863 回答