2011-09-12 148 views
2

所以我有一個頁面,動態加載圖像在用戶請求,基本上隨機圖像會彈出時,他們點擊一個按鈕。我想找到一種方法來隱藏圖像,直到它完成加載,然後再次顯示。我試着用jQuery的$(window).load()函數來做這件事,它對第一個圖像完美地工作,但是當我加載下一個圖像時事件不會再次觸發。有沒有另外一種方法來做到這一點,或重置load()事件?謝謝。jQuery等待動態圖像加載

注意:有問題的圖片是相當大的gif動畫,但它們非常,有些只需要一些時間加載,有些可能需要20秒。

+0

這是可能的,但你需要告訴我們你正在使用的代碼,所以我們可以建議。 – jfriend00

回答

0

隱藏它使用CSS和傾聽每個圖像的加載事件:

<img style="display: none" class="loadedImage" src="..." /> 

$(function(){ 
    $(".loadedImage").live("load", function(){ 
     $(this).show(); 
    }); 
}); 
+0

這是我從'.live()'文檔的理解,'.live()'不適用於加載事件。它只適用於泡泡文檔的某些類型的事件。請參閱此處的「注意事項」部分:http://api.jquery.com/live/。 – jfriend00

+0

謝謝。我不知道。我原本想編寫簡單的「.load()」,但由於我不太確定_dynamically loaded images_意味着什麼(不管標記是否已經存在,只有src正在改變或者是什麼),我插入了'.live ()' –

3

我有一個jQuery plugin called waitForImages這將有助於這一點。

$('#newly-loaded-element').hide().waitForImages(function() { 
    $(this).show(); 
}); 
+0

如果以後使用相同的標籤加載新圖像,圖像src屬性被更改,該插件是否可以工作? – guub

+0

@guub不,您需要在更新'src'屬性後再次調用它。 – alex