0

我最近做了一个小的 jQuery 片段,它允许我在加载真实图像之前显示加载 img。

该片段似乎适用于 Safari、Chrome 但不适用于 FireFox。

FireFox 只显示一个loadingalt 并且从不切换到加载的图像。

这是片段

var loading = $('<img src="/media/ajax-loader.gif" alt="loading" />');
    $('.thumbnail').each(function(){
        var loadIMG = loading.clone();
            $(this).after(loadIMG).load(function(){
                $(this).fadeIn('fast');
                loadIMG.hide();
        }).hide();
    });

任何想法为什么?

4

1 回答 1

1

你还没有说 FF 到底发生了什么,但下面可能是问题之一。来自jquery 文档

如果图像是从浏览器缓存中加载的,则可能不会触发 load 事件。为了解决这种可能性,我们可以使用一个特殊的加载事件,如果图像准备好,它会立即触发。event.special.load 目前可作为插件使用。

这是插件的链接

编辑:

根据 load 事件的评论,请尝试以下操作:

$('.thumbnail').each(function(){
        var loadIMG = loading.clone();
            $(this).after(loadIMG).load(function(){
                $(this).fadeIn('fast');
                loadIMG.hide();
        }).hide();
        if (this.complete) $(this).trigger("load");
});

当然,插件似乎在处理其他一些场景的同时也在做同样的事情。

于 2010-09-21T07:33:17.687 回答