2012-04-28 4 views
0

Я хочу отобразить фоновое изображение (loading.gif), пока изображение загружается. В изображении загружается Thanx на следующий код:Image loader не отображается

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()» ... но тогда я думаю, что изображение будет частично отображаться ДО ТОГО, что оно полностью загружено, не так ли?

Thanx для вашей помощи!

+0

Загрузите IMG первого (с новым изображением), затем добавить его. Таким образом, вы можете отображать счетчик при загрузке. – mddw

+0

Извините, но я не понимаю, что я должен точно изменить ... – user1296220

+0

Ну, если вы создадите образ, загрузите его, добавьте его, вам не нужно скрывать , чтобы вы могли отображать счетчик. Другое решение: добавьте spinner в другой элемент с некоторым CSS. – mddw

ответ

0

Это потому, что вы скрываете его, когда он загружен

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/>').attr('src', data.src).load(function() { 
     img.removeClass('loading').attr('src', data.src).hide().fadeIn(); 
}); 
+0

Но все это выглядит так, будто оно принадлежит циклу над данными 'for (var i in result) {var data = result [i]; ... ' – jcubic

+0

Разве это не мой код ... только без .hide()? – user1296220

+0

Это не то же самое, вы скрыли (вне DOM) изображение, и вы подключили к нему событие загрузки (так оно выполняется, когда оно загружено), и основное (видимое) изображение изменяется при загрузке этого скрытого объекта. И ваш код добавляет src в скрытый элемент. Если вы спрячете что-то, оно будет скрыто;) – jcubic

0
window.onload = function() 
{ document.getElementById("loading").style.display = "none"; }  
Смежные вопросы