fadeIn回调在jquery.ajax内部无效

时间:2013-04-01 20:01:35

标签: javascript jquery ajax callback

我使用AJAX获取一些数据,将元素添加到body然后显示它。显示后,我需要对一个新元素执行一些客户端操作(比方说,我需要使用codecogs' script渲染Latex)。我的代码如下所示:

$.ajax({
/* ... */
success: function(data){
    /* new element generation... */
    $(newelement).fadeIn(100, LatexIT.render('*'));
},
/* ... */ });

如您所见,我将LatexIT.render('*')称为来自fadeIn的回调。它应该在动画结束后立即执行LatexIT.render('*')所做的任何操作。但是当从$.ajax success调用时,回调不起作用,尽管淡入淡出本身正常发生。

更新:我尝试用任何简单的函数替换LatexIT.render('*'),但它不起作用。从ajax成功之外调用时fadeIn(100, function () { LatexIT.render('*') }); 工作。

2 个答案:

答案 0 :(得分:2)

LatexID.render('*')调用 .render方法的语法,而不是绑定它。除非它本身返回一个不太可能的函数,否则你需要使用这种语法:

.fadeIn(100, function () { LatexIT.render('*') });

你也可以这样做:

.fadeIn(100, LatexIT.render.bind(undefined, '*'))

假设您需要支持的浏览器具有.bind

答案 1 :(得分:1)

你没有给它一个成功的回调,你正在执行你的渲染并给出渲染方法返回到淡入淡出动画的完整参数的内容,这实际上不是动画最后可以调用的函数。 / p>

你应该将它包装成一个匿名函数: $(newElement).fadeIn(100, function() { LatexIT.render("*"); })