2013-05-16 4 views
0

저는 Ajax 요청에서 이미지와 데이터를로드 한 다음 Blocksit 갤러리 (masonary 갤러리의 jquery 플러그인)에 표시하는 스크립트를 실행하고 있습니다. 이미지 div가 실제로로드되기 전에 문제 div가 생성되어 갤러리에 올바르게 배치되지 않습니다. 어떻게 든 데이터를 보관하고로드 한 다음 갤러리를 표시하는 함수를 실행해야합니다. 나는 setTimout을 사용해 보았지만 분명히 거기에서 운이 없다. 여기에 내 코드 :ajax 요청에 이미지 미리보기

어떤 도움을 크게 감사
("#loadMore").click(function(){ 
    $.ajax({ 
     url: "loadMore.php", 
     data: {count: count, 
       type: type}, 
     type: "POST", 
     success: function(html){ 
      var data = jQuery.parseJSON(html); 
      if (data.html == "stop"){ 

      } 
      else{ 
       setTimeout(function() { 
        $('#container').append(data.html); 
        $('#container').BlocksIt({ 
         numOfCol: 3, 
         offsetX: 5, 
         offsetY: 5 
        }); 


       }, 2000); 
       $('html, body').animate({ scrollTop: $(document).height()-$(window).height() }, 500, "linear"); 
       count = $(".grid").length; 
      }   
     } 
    }); 
}); 

:

답변

1

다음 단계를 사용해보십시오 -

$('<img/>')[0].src = /* ur url */; 

다음 실행 DOM 만들

을 코드 onLoad 이벤트

$('img').load(function(){ 
// your code 
}); 

a ctually 브라우저는 데이터가 돔에 추가되지 않을 때까지 똑똑합니다. ..... 시간이 얼마 남지 않았습니까? 그렇다면 시간이 얼마 남았는지에 상관없이 dom을 만든 다음 img를 삽입하십시오. 올바른 장소

+0

이 경우 .. 내 src = to는 무엇입니까? 로딩을 위해 data.html을 가지고 있습니다. – diskrim

+0

당신은'$ ('img')를 사용하여 그것들을 추출해야합니다. 각각 (function() {$ this} .attr ('src');})' –

+0

So , 먼저 data.html을 수집하고 각 이미지가로드 될 때마다 데이터를로드해야합니다 ...이 코드를 내 코드에 적용하는 방법을 보여줄 수 있습니까? 나는 길을 잃었다. 이 문은 어디에서 각각 실행해야합니까? 그것을 명시하지 않고 data.html에서 가져 오는 것을 알고 있습니까? – diskrim