0

我使用 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('*') }); 确实有效。

4

2 回答 2

2

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

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

你也可以这样做:

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

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

于 2013-04-01T20:03:40.997 回答
1

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

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

于 2013-04-01T20:11:25.933 回答