2011-12-06 85 views
3

我知道.append()沒有任何回調函數,但是當我嘗試這樣做:如何模擬追加回調函數?

$.onShadowboxFinished = function (f) { 

var postid = $(f.link).parent().attr("id"); 
var loadUrl = "wp-admin/admin-ajax.php?action=mfields_show_post&p=" + postid; 
$('#infos_wrap').load(loadUrl).append(); 
alert("loaded! test selector :"+$('a.projectimgs').first().attr("href")); 

} 

我加載內容(鏈接和圖像)到DIV #infos_wrap。一旦加載了所有鏈接和圖像,我想操作內容(例如:選擇將它們添加到shadowbox緩存的鏈接)

現在,第4行在第3行之前執行。

感謝您的幫助!

PS:如果有人真的要幫助(我會很感激的^^)
您可以檢查網站:http://www.tom-portfolio.fr/wp-login.php
登錄:遊客
通:遊客
JavaScript文件是portfolio.js
使用你的firebug或GoogleDev工具來查看它!
非常感謝!

回答

2

你想要做的是使用回調函數的​​功能,因爲它是異步的(即它會保持執行後,直到它臨危響應,並觸發其回調函數的代碼):

var postid = $(f.link).parent()[0].id, 
    loadUrl = "wp-admin/admin-ajax.php?action=mfields_show_post&p=" + postid; 

$('#infos_wrap').load(loadUrl, function() { 
    alert("loaded! test selector :"+$('a.projectimgs').first()[0].href); 
}); 

注​​將用來自AJAX呼叫的響應(在這種情況下爲#infos_wrap)代替#infos_wrap的內容,因此我們不必使用.append()(使用內部.html()替代所選元素的HTML,而不是附加響應)。

另請注意,我更改了.attr()的幾個實例,不需要它。

的文檔​​:http://api.jquery.com/load

+0

THX你的答案!但是,我應該精確的說,鏈接'a.projectimgs'是通過ajax加載的。 – KouiK

+0

'$('a.projectimgs')。attr(「href」)'仍然未定義:警報在內容加載到div之前出現 – KouiK