2010-06-29 57 views
1

我正在通過AJAX加載圖像標記,並將它們與傳統的.html(content)函數一起插入jQuery以及其他一些HTML中。但是,如果您從頭開始加載頁面,此問題仍然適用。現在,我有一個背景圖像佔位符放在那裏,而圖像加載。圖像加載時,我希望此背景圖像消失。刪除圖像加載的背景圖像

問題:

如果我附上一個傳統.load(function)事件監聽器,我關注的是,圖像可能會加載應用前的對鉤(投入小JS <script>掛鉤圖像之後,而不是在一個$(function(){})塊可能會有所幫助)。我還沒有遇到這樣的行爲,但是我在規範中什麼都不知道會阻止這種情況的發生(因爲在應用掛鉤之前,圖像標記應該被完全解析)。

我目前的解決方案。將該命令放置在圖像標記內的聯機onload=屬性中。

有沒有更好的方法?

回答

4

直到一個星期左右之前,我也會失去。值得慶幸的是this answer to another question將幫助你:

基本上把這個$()

$(function(){ 
    var img = $("#idofimage").load(function() { 
     /* your magic to swap out placeholder */ 
    }); 

    if (img[0].complete) { 
    // Trigger the load handler if the image 
    // is already loaded 
    img.trigger('load'); 
    } 

}); 
+1

啊......所以'完成'是我正在尋找的旗幟。我一直在搜索DOM規範,一定是錯過了!乾杯。 – 2010-06-29 22:14:46

0

你不需要jQuery的這一點,你可以用CSS做。

.my-img-loader-class { background:url('placeholder-or-progress'); } 

或者,如果你不想改變你的HTML:

#container img { background:url('placeholder-or-progress'); } 

要顯示佔位符載入圖像時,在一個特定的div。

它的工作方式是圖像元素將顯示佔位符圖像作爲其背景,當src加載它時,它將出現在佔位符上方,以便很好地替換它。

+1

這就是我已經在做的事情。一旦圖像加載,我希望背景消失。否則,透明圖像將顯示背景。 @Doug Neiner的工作訣竅。 – 2010-06-29 22:15:38