2012-04-28 3 views
0

이미지가로드되는 동안 배경 이미지 (loading.gif)를 표시하려고합니다. 다음 코드 고맙습니다 이미지로드 :이미지 로더가 표시되지 않습니다.

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 코드는 다음과 같습니다 이미지가로드 한 다음 표시하지만 이미지가로드되는 동안 로더 (이 here을 볼 수있다)이 표시되지 않습니다 :

.loading { background: #FFF url(../img/loading.gif) center center no-repeat; } 

문제는있다. ".hide()"를 삭제해야한다고 생각했지만 그때 이미지가 부분적으로 완전히로드되기 전에 표시 될 것입니다.

고맙습니다.

+0

로드 IMG을 장전 할 때 당신이 그것을 숨기기 때문입니다, 다음을 추가합니다. 이렇게하면로드하는 동안 회 전자를 표시 할 수 있습니다. – mddw

+0

미안하지만, 정확히 바꿔야 할 것이 무엇인지 이해할 수 없습니다. – user1296220

+0

이미지를 생성하고로드 한 다음 추가하면 을 숨길 필요가 없으므로 회 전자를 표시 할 수 있습니다. 다른 해결책 : 스피너를 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 데이터 = 결과 [i]; ... ' – jcubic

+0

.hide()가 없어도 내 코드와 동일하지 않습니까? – user1296220

+0

DOM (외부) 이미지를 숨겨서로드 이벤트를 첨부하여 (로드 될 때 실행되도록)이 숨겨진로드 될 때 기본 (보이는) 이미지가 변경됩니다. 그리고 코드는 숨겨진 요소에 src를 추가합니다. 뭔가 숨기면 감추어 질 것입니다.) – jcubic

0
window.onload = function() 
{ document.getElementById("loading").style.display = "none"; }  
관련 문제