使用jquery的图像预加载问题

时间:2011-09-28 10:38:51

标签: javascript jquery arrays image-preloader

这里我给的代码是通过jquery预加载图像。

 var _images = ['/images/ajax-loader.gif'];
   $.each(_images, function (e) {
       $(new Image()).load(function () {
           //alert($(this).attr('src') + 'has loaded!');
       }).attr('src', this);
   });

上面的代码工作正常,因为这里我们硬编码图像路径,但是当图像路径存储在变量中时,它就不起作用了。

这里我给出了给出错误的代码。

    var _images = '[' + data.d[0].LabelImagePath + ']';
                        $.each(_images, function (e) {
                            $(new Image()).load(function () {
                                $('#imgHolder').html("<img src='" + data.d[0].LabelImagePath + "' border=0/>");
                                $("#btnPrint").show();
                            }).attr('src', this);
                        });

此行返回图像路径,如/images/1Z520777777779.gif。

所以请指导我如何通过上面的代码将图像路径存储在带有jquery的变量中时预加载图像。感谢

1 个答案:

答案 0 :(得分:3)

你正在构建一个字符串而不是一个数组(我不知道为什么)。您的$.each()期望可以迭代的内容。

尝试创建一个数组,它将起作用:

var _images = [data.d[0].LabelImagePath];

此外,在$.each()内,请勿使用data.d[0].LabelImagePath,因为当您尝试预加载多张图片时,它会破坏您的代码。