2012-10-11 88 views
0

我正在使用jQuery的ajax函數$.get()從頁面下載數據。然後我將這些數據轉換爲一個帶有$(data)的jQuery對象,從而允許它構造一個DOM樹。然後我追加使用此數據append()添加html代碼時引發jQuery加載事件

是否有jQuery的辦法火類似於load這會告訴我,當數據的I幀/圖像/視頻完成加載的事件?在append()之前還是之後?

根據jQuery的文檔,所述load事件僅觸發上的特定對象:

此事件可以被髮送到與URL相關聯的任何元素:圖像,腳本,框架,內部框架,和窗口對象。

我可以遍歷所有的數據,並附加一個load監聽到每個對象,然後計算有多少和有load處理算多少已加載(或已經被緩存),直到數量達到總數。不過,我正在尋找此解決方案的替代方案。

我試圖通過load()on(),但附加了load事件到window對象一旦當活動頁面初始加載這些只火。

這裏是我的代碼:

$.get(url_string, function(data) { 
    // Create DOM elements out of the downloaded html text 'data' 
    // and take a subset of the DOM elements, where the id is #content 
    var myContents = $(data).find("#content"); 

    // Insert DOM elements into the active page 
    $("#destination").append(myContents); 

    // Check when all images/iframes/video elements have loaded 
    // Does not work 
    $("#destination").load(function() { 
     alert("new stuff loaded"); 
    }); 

    // Does not work either 
    myContents.load(function() { 
     alert("new stuff loaded"); 
    }); 
}); 

這個問題是與

但SOLUT在這些中提供的離子都是我上面提到的那個,在那裏我將不得不計算那裏有多少物體,然後檢查總計何時達到。

+1

一個jsFiddle演示將有助於準確顯示此問題。 – Sparky

回答

0

目前的jQuery(1.8.2)的最新版本,並沒有進行實彈射擊DOM事件做好準備HTML時附加的支持。

0

您正試圖在加載內容後分配加載事件。在追加內容之前定義它們。

試試這個,

$.get(url_string, function(data) { 
    // Create DOM elements out of the downloaded html text 'data' 
    // and take a subset of the DOM elements, where the id is #content 
    var myContents = $(data).find("#content"); 

    // Check when all images/iframes/video elements have loaded 
    $("#destination").load(function() { 
     alert("new stuff loaded"); 
    }); 

    myContents.load(function() { 
     alert("new stuff loaded"); 
    }); 

    // Insert DOM elements into the active page 
    $("#destination").append(myContents); 
}); 
+0

感謝您的建議ocanal!我試了一下,但沒有奏效。這是可以理解的,因爲'load()'不能被附加到文檔中提到的以外的標籤。 – Daniel

+2

您的回答可能會讓讀者感到困惑,因爲您已經保留了所有原來的評論,說'不行','也不管用'等等。 – Sparky