2013-05-16 106 views
0

我正在運行一個腳本,它從ajax請求中加載圖像和數據,然後將其顯示在我的Blocksit圖庫(一個用於masonary圖庫的jquery插件)中。問題divs是在圖像實際加載之前創建的,因此它們不能正確放置在圖庫上。我需要以某種方式保存數據,加載它,然後運行該功能以顯示畫廊。我曾嘗試使用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

嘗試使用以下步驟 -

創建DOM

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

然後運行代碼onLoad事件

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

a實際上瀏覽器是足夠聰明的,直到數據不加載在DOM它不會加載.....它甚至沒有多少時間你設置超時,所以嘗試創建DOM然後加載IMG插入它正確的地方

+0

在這種情況下..什麼是我的src = to。 我有data.html我正在加載 – diskrim

+0

你必須使用'$('img')來提取出它們each(function(){$(this).attr('src');})' –

+0

所以,我需要首先收集data.html,然後運行.each,然後在加載每個圖像時加載數據...可以告訴我如何使其適應我的代碼。我搞不清楚了。我在哪裏運行這個每個語句。它是否知道從data.html中提取沒有說明它? – diskrim