【发布时间】:2012-04-28 11:32:25
【问题描述】:
我想在图像加载时显示背景图像 (loading.gif)。图像加载thanx到以下代码:
var item = $('<li><a class="black-links" href="' + data.url + '#comments" title="' + data.title + '"><img class="loading"></a></li>');
var img = item.find('img');
img
.hide()
.one('load', function() { $(this).removeClass('loading').attr('alt', data.title).attr('width', data.width).attr('height', data.height).fadeIn(); })
.attr('src', data.src)
.each(function() { if (this.complete) $(this).trigger('load'); });
所以一开始就在图像中添加了一个“加载”类,然后在图像完全加载(并显示)后删除该类。所以CSS代码是:
.loading { background: #FFF url(../img/loading.gif) center center no-repeat; }
问题是:图像被加载,然后显示,但是加载器在图像加载时永远不会显示(这可以看到here)。 我以为我应该删除“.hide()”...但是我认为图像将在完全加载之前部分显示,不是吗???
感谢您的帮助!
【问题讨论】:
-
首先加载img(带有新图像),然后附加它。这样,您可以在加载时显示微调器。
-
对不起,我不明白我应该准确地改变什么......
-
好吧,如果你创建一个图像,加载它然后附加它,你不必隐藏
,所以你可以显示微调器。其他解决方案:使用一些 CSS 在另一个元素中添加微调器。
-
所以我可以只改变最后一部分,像这样吗? img.one('load', function() { $(this).attr({src: data.src, alt: data.title, width: data.width, height: data.height}).fadeIn(); }).attr('src', '../img/loading.gif').each(function() { if (this.complete) $(this).trigger('load'); });这样可以吗???
-
当你只有一个元素时调用每个元素。