如何模拟追加回调函数?

时间:2011-12-06 20:55:06

标签: jquery load append shadowbox

我知道.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工具查看它!
非常感谢!

1 个答案:

答案 0 :(得分:2)

你想要做的是使用.load()函数的回调函数,因为它是异步的(意味着代码继续执行,直到它收到响应并触发其回调函数):

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);
});

请注意,.load()会将#infos_wrap的内容替换为AJAX调用的响应(本例中为#infos_wrap),因此我们不必使用{{1} (使用内部.append()替换所选元素的HTML而不是附加响应)。

另请注意,我更改了.html()的几个不需要的实例。

.attr()的文档:http://api.jquery.com/load