2011-01-27 50 views
1

我正在使用jQuery加載()函數從一個div內加載一些內容。它顯示在瀏覽器上,但是當我嘗試使用函數find()時,它找不到任何東西,因爲它不會顯示在DOM中。我已經嘗試在加載之後,在使用find()之前打印出div的HTML內容(保存加載的內容的HTML內容) - 它顯示了div之前的HTML內容被加載進來。加載div還沒有在DOM

所以問題是,如何在加載的內容中查找某個id,如果它不在DOM中呢?

也許我可以用live()和自定義事件解決這個問題嗎?

這裏是正在發生的事情的一些非常簡單的代碼:

$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view'); 
console.log($('#srv-1111').html()); 

生成的源不包括#SRV-1111元素,它包含HTML。雖然我沒有在控制檯中找到任何東西。

+1

,如果你能分享/顯示的代碼這將會有所幫助。 – 2011-01-27 12:33:14

回答

0

我需要操作$(「#SRV - 」 + maskId)元素,所以我已經實現了神奇的 - 至少對我來說:

$('#serverctl-server-dc').live('getId', function(){ 
    $('#srv-'+maskId).parent().css('border','4px solid #AF0200'); 
}); 

$('#serverctl-server-dc').load('query.php?m=serverctl&q=shelf_view', function(){ 
    $('#serverctl-server-dc').trigger('getId'); 
}); 
0

原則上它應該找到你的元素,但你需要驗證你的動作順序。

你到底什麼時候使用查找功能?

使用Chrome開發人員工具,因爲它向您顯示當前操作的HTML,而不是加載的原始文件。

如果需要更多解釋,請發佈您的代碼。 祝你好運!

0

您可以使用螢火蟲和調試腳本。加載內容後,搜索id以查看它是否真的存在。

HTH

3

「負載」是異步的。您應該將處理放在加載請求的回調函數參數中。只有這樣你才能確定DIV的內部元素可用。

是的,如果你想處理新元素上的事件,你可以使用「live()」。如果你只是想操縱新元素(除了用CSS來設計樣式),例如用其他的東西替換一些文本,或者動畫它們,你需要等待它們被加載。

+0

+1 ..使用回調確實是正確的方法,並且在官方頁面http://api.jquery.com/load/中清楚地記錄了「在提供的回調(如果有的話)在此後處理之後執行已執行「 – 2011-01-27 12:56:34