2012-07-16 46 views
0

請注意以下代碼中的​​事件。

var img; 
var path = "/theimage.jpg"; 

$(document).ready(function() { 

    img = new Image; 

    img.src = path; 

    $(img).load(function() { 
     redraw(0); 
     zoom(-2, 1.7, false); 
    }); 
}); 

此事件成功時的圖像加載...

但我怎麼能拿到​​事件,如果以後在頁面的生命週期(火再次說,當用戶點擊一個鏈接)我將srcimg更改爲一個全新的路徑(新圖像)?

+0

創建你的意思是,當你設置'.src'不火的jsfiddle真的嗎? – 2012-07-16 20:46:47

+0

它第一次觸發,但如果我稍後在另一個位置更改img(同一對象)的src,它似乎不會再次觸發。 – BigOmega 2012-07-16 20:49:24

+0

您的圖像可能會被您的瀏覽器緩存,因此您只需設置一個新的(內存中)圖像並將其應用於無。 – 2012-07-16 20:50:28

回答

1

load事件將在整個新映像加載後自行啓動。

+0

只有當他使用與事件綁定的完全相同的圖像元素時。我沒有看到他實際將哪個'img'元素附加到DOM。 – 2012-07-16 20:55:17

+0

@KevinB你不需要將它附加到DOM的圖像加載,這就是圖像預加載或15年前完成 – 2012-07-16 20:57:10

+0

@JuanMendes正確,但負載事件綁定到'img',如果'img'沒有移動到dom,那麼在使用與'img'相同的src的dom上更改其他img的src將不會發生'img'的加載事件。這就是我想說的。當然,他可以改變全局的'img' var的src並且發生加載事件。 – 2012-07-16 20:59:26

2

結合duri和Roko說過的話。

如果您在初始加載後設置了.src,則加載事件會觸發。 http://jsfiddle.net/2wWDN/

如果圖像緩存,事件仍然會再次觸發,至少這是我在上面

+0

另外,如果你第一次綁定加載事件,然後改變src,它將首次啓動,無論圖像被緩存 – 2012-07-16 21:02:14

+0

要清楚,圖像只會被緩存,如果它是相同的路徑,對吧? – BigOmega 2012-07-16 21:04:36

+0

@libertas不,它會被緩存,如果你有相同的路徑加載以前加載的任何地方,即使是不同的頁面,它是一個全局瀏覽器緩存 – 2012-07-16 21:08:12