2011-10-17 170 views
4

這是我的代碼:檢查背景圖像加載

$('<div>') 
    .css('background-image', 'url(' + images[imageToLoad].url + ') no-repeat center center') 
    .appendTo('#image-container') 
    .hide() 
    .load(function() { 
     loadedImages.push($(this)); 
    }); 

不知何故,load事件從來不在這裏時,背景圖像加載觸發。我應該捕獲什麼事件來了解背景何時加載?

回答

3

什麼@variant說,自IMG onload事件+代碼總是不火:

var img = new Image(), 
    div = $("<div>").appendTo("#image-container").hide();   

img.onload = function(){ 
    if(this.isLoaded) { 
    return; 
    } 
this.isLoaded = true; 
loadedImages.push( 
    div.css("background-image", "url('"+this.src+"') no-repeat center center") 
    ); 
} 

img.src = images[imageToLoad].url; 

if((img.complete || img.readyState === 4) && !img.isLoaded) { 
img.onload(); 
} 
+0

的IMG onload事件總是不火,甚至使用jQuery`.load()`?你可以詳細解釋一下嗎? – Randomblue 2011-10-17 12:23:42

1

這裏沒有任何事件需要捕捉。

你可以做的是使用IMG標籤預加載圖像,並聽取load事件。當它被觸發時,將div的背景圖像附加到DOM。該圖像已經在瀏覽器的緩存中,並且加載將是即時的。