我试图在使用jQuery发出ajax请求后的某个时间出现内容,但是我遇到了一些问题。
以下是代码:
$.ajax({
url: 'content.php',
data: '&go=' + tab,
success: function(data) {
setTimeout("pencil()",3250);
setTimeout('$("#content").html(data).fadeIn()',5000);
}
});
问题是“内容”在5秒后没有以这种方式加载。然而,如果我把它放在没有setTimeout的情况下它会立即出现 - 但这样就会破坏动画。
我该如何解决这个问题?
谢谢。
答案 0 :(得分:4)
您在传递给data
的字符串中使用变量setTimeout
,但在执行字符串时该变量将不再存在。
您可以使用函数对象而不是字符串来解决此问题:
setTimeout(function() {
$("#content").html(data).fadeIn()
}, 5000);
这是有效的,因为data
的值保存在闭包中。
答案 1 :(得分:3)
问题可能是在字符串输入中的setTimeout中放入jquery代码。 试试这个:
setTimeout(function(){$("#content").html(data).fadeIn()},5000);
我认为这应该有效。您之前的方法的问题是setTimeout无法使用输入运行函数,例如,如果您编写“铅笔(数据);”它也行不通。
答案 2 :(得分:2)
您需要将jQuery调用包装在函数
中$.ajax({
url: 'content.php',
data: '&go=' + tab,
success: function (data) {
setTimeout(pencil, 3250); //pass in a function reference preferably.
setTimeout(function(){$("#content").html(data).fadeIn()}, 5000); //wrap it in a function
}
});