2010-12-07 85 views
1

我想Ajax加載一些內容,然後用新下載的內容替換頁面上的現有內容。問題是我需要綁定load(handler(eventObject))事件來替換數據。我需要在所有圖像加載時觸發。以下是我迄今爲止:jQuery加載事件後replaceWith

$("#mainContentHolder").live("load", function(){ 
    alert("images loaded!") 
}); 

$.get("content.htm", function(data){ 
    $("#mainContentHolder").replaceWith(data); 
    alert("content is loaded!"); 
}); 

我看到當內容加載的警報,但之前加載圖像和報警圖像上載從未發生過它發生(我也試過bind()代替live()之前)。 有沒有人知道這個問題的解決方法?

+1

此內容,您的意思是圖片,還是有其他類型的額外資源? – Orbling 2010-12-07 00:18:03

+0

@negative閱讀此提示也http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/ – kobe 2010-12-07 00:21:34

+0

@Orling,是的,它是不僅僅是圖像,而且我假設我在`.get()`回傳中得到了所有的圖像。 – 2010-12-07 00:25:46

回答

2

這可能是也可能不是你的問題,但它看起來就像當你加載AJAX的內容被替換您所附加的圖像加載功能的容器:

$("#mainContentHolder").live("load", function(){ //you are attaching to current and future '#mainContentHolder' elements 
    alert("images loaded!") 
}); 

$.get("content.htm", function(data){ 
    $("#mainContentHolder").replaceWith(data); //'#mainContentHolder' element is replaced with something else 
    alert("content is loaded!"); 
}); 

不知道什麼樣的內容來了從您的AJAX調用返回,但如果它沒有#mainContentHolder元素,則圖像加載事件處理程序將不會附加任何內容。

如果這不是它,這裏還有該位:(從http://api.jquery.com/load-event/

這是可能的,如果圖像是從瀏覽器緩存加載負荷事件將不會被觸發。爲了說明這種可能性,我們可以使用一個特殊的加載事件,如果圖像準備就緒,它會立即觸發。 event.special.load是currently available as a plugin

希望其中的一個能幫助你。

0

是否可以將$ .get放入活動加載函數中?

$("#mainContentHolder").live("load", function(){ 
    alert("images loaded!"); 
$.get("content.htm", function(data){ 
    $("#mainContentHolder").replaceWith(data); 
    alert("content is loaded!"); 
}); 
});