2012-11-03 6 views
0

슬라이드 쇼를위한 세트의 첫 번째 이미지가로드 될 때까지 페이지 내용을 다루는 div를 사용하고 있습니다. 이 div를 숨기기 위해 사용하는 코드는 다음과 같습니다. 그러나 작동하지 않습니다.스택의 첫 번째 이미지가로드 될 때 "loader"div를 숨기시겠습니까?

$(function() { 
    $('.slide').first(function() { 
    $(this).load(function() { 
     $('#loader').fadeOut('slow'); 
    }); 
    }); 
}); 

이유가 무엇입니까? "loader"div는 전체 페이지가로드 된 후에도 숨기지 않습니다. 나는 약간의 성공을 $ ('# loader') 실행했다 .fadeOut ('slow'); on (window) .load().

+1

로드 된 이미지의 HTML을 볼 수 있습니까? –

+0

JSON을 통해 다른 jQuery 함수를 통해로드되므로 소스에 표시되지 않습니다 ... http://new.element17.com에서 Chrome Inspector (또는 이와 동등한 버전)에서 볼 수 있습니다. – NaOH

+1

json에서 첫 번째 이미지로 src를 가져와 새 JS 이미지 객체를 만들고 이미지 객체의 onload 함수에 페이드 아웃을 첨부해야합니다. – adeneo

답변

1

이미지는 ajax를 통해로드되며 DOM을 처음로드 할 때 존재하지 않습니다. 첫 번째 이미지가 DOM에 추가 된 후 로딩 이미지를 숨기십시오.

$.each(images, function(index) { 
    $('#slideshow').append('<div class="slide" style="background-image:url(' + this + ');"></div>'); 
    if(index === 0){ 
    $('#loader').fadeOut('slow'); 
    } 
}); 
+0

흠, 불행히도이 작업을 원하지 않습니다 ... – NaOH

+1

아, 동적으로 .slide div를로드 중입니다. 이러한 요소가 존재하지 않습니다. JQuery가로드를 테스트 할 때의 페이지 –

+0

오른쪽 ... div를로드하는 코드는 다음과 같습니다 :'$ .getJSON ('../function.php', function (images) {$ .each (images, function() $ ('# slideshow'). $ ('# slideshow'). $ ('# slideshow') 다음에 #loader를 숨길 수있는 방법이 있나요? .each()의 첫 번째로드? – NaOH

관련 문제