2012-10-10 151 views
4

我想在實際顯示div之前加載div中的每個圖像。我有一些與此類似:JQuery在顯示之前加載div內的所有圖像

<div> 

<img src="1.jpg" /> 
<img src="1.jpg" /> 
<img src="1.jpg" /> 
<img src="1.jpg" /> 
<img src="1.jpg" /> 
<img src="1.jpg" /> 

</div> 

一開始我嘗試做這樣的事情:

$('div img').load(function() { 

$('div img').show(); 


}); 

或者這樣:

$('div').find('img').load(function() { 

$('div img').show(); 

}); 

不幸的是,這一次都沒有瀏覽器,因爲工作加載甚至只是一個圖像,它會觸發事件。有關如何首先加載所有內容的任何想法?謝謝!

+1

如果設置這樣的尺寸:問題就迎刃而解了。在PHP中,您可以通過http://php.net/manual/en/function.getimagesize.php獲取尺寸。 – Alqin

回答

7

您可以跟蹤的多少圖像已加載:

var $images = $('div img'), 
    preloaded = 0, 
    total = $images.length; 
$images.load(function() { 
    if (++preloaded === total) { 
     // Done! 
    } 
}); 
+0

我認爲這會失敗,如果IE8緩存的圖像。 – Fresheyeball

+0

哦,這是一個很好的觀點。如果有其他人犯了這個錯誤,我會把它留在這裏。 – nathan

1

不幸的是,沒有簡單的方法在一個跨瀏覽器兼容的方式來做到這一點。但幸運的是,有2個插件可以使它無痛苦。

退房waitforimagesimagesloaded

然後,你可以這樣做:

$('div').waitForImages(function(){ 
    $(this).find('img').show(); 
}); 
+0

感謝編輯@alex。接得好。 – Fresheyeball

0

首先,現代的瀏覽器可以執行併發6請求=>請勿在加載時加載如此多的圖像。如果你有很多圖片,你可以將圖片設置在後面的'src =「'''或非設置」src「屬性中,並且在第一張圖片加載後設置。

第二,你可以通過使用

document.getElementById('#imageId').complete == !0 

您可以檢查具有最大尺寸的圖像或DOM中的最後一張圖像,以確保其他圖像已加載。

希望它能幫助你。

0

這爲我工作:

$(document).ready(function() { 
    $('#div with images').hide(); 
}); 

$(window).load(function() { 
    $('#div with images').show(); 
}); 
+0

正確,但不適用於div,適用於頁面中的所有圖像。 – user3304007

相關問題