2010-07-22 25 views
1

我正在更改圖像節點的圖像src。 我希望能夠確保在執行某些代碼之前進行了更改。我會怎麼做?確保在動態更改jquery時加載圖像

現在我有

function changePic(imgNode, newPic, desc){ 
    var descNode = $("#description"); 
    $(imgnode).fadeTo(500, 0, function(){ 
     $(imgnode).attr("src", newPic); 
     $(imgnode).attr("alt", desc) 
     descNode.text(desc); 
     $(imgnode).fadeTo(500, 1); 
    }); 
} 

偉大工程,如果服務器的快速/本地服務器。如果服務器的速度很慢,那麼在更改之前圖像會淡入其中...

任何想法?

編輯:我在調用changePic時加載圖像。任何更好的方法來做到這一點?

更多:也就是爲什麼它不是一個好主意,把最後一行,

$(imgnode).fadeTo(500,1);

,回調函數之外?

+1

猜測你在調用changePic之前沒有預加載圖像? – AlG 2010-07-22 18:03:19

回答

2

Preload the image,但可以肯定它是完全加載,使用。

引用:

負載事件被髮送到一個元件 當它和所有的子元件已經 完全加載。此事件可以是 發送給任何與 URL關聯的元素:圖像,腳本,框架,iframe, 和窗口對象。

,千萬不要錯過這行:

這是可能的,如果圖像是 從瀏覽器緩存加載的加載事件 不會被觸發。對於 考慮這種可能性,我們可以使用 使用一個特殊的加載事件,如果圖像準備就立即觸發 。 event.special.load目前是 available as a plugin

我整理了一個我認爲你想要它工作的例子。我在通過Google圖片找到的三張圖片之間切換。我在更改圖像的src之前綁定加載事件以確保它被觸發。 http://jsfiddle.net/xdjjR/1/

0

從文檔使用回調PARAM doc 例如:

$('#clickme').click(function() { 
$('#book').fadeOut('slow', function() { 
    // Animation complete. 
    }); 
}); 
1

我想,你可以在隱藏的元素中預載圖像,以便使用其他html加載圖像。當源改變這樣的圖像應立即顯示。