jQuery 不显示带有 setTimeout 的内容
我试图在使用 jQuery 发出 ajax 请求后一段时间显示内容,但我遇到了一些麻烦。
代码如下:
$.ajax({
url: 'content.php',
data: '&go=' + tab,
success: function(data) {
setTimeout("pencil()",3250);
setTimeout('$("#content").html(data).fadeIn()',5000);
}
});
问题是“内容”在 5 秒后没有以这种方式加载。但是,如果我在没有 setTimeout 的情况下放置它,它会立即出现 - 但这样它就会破坏动画。
我该如何解决这个问题?
谢谢。
I am trying to get a content appear after sometime after making an ajax request with jQuery but I am getting some trouble with it.
Here is the code:
$.ajax({
url: 'content.php',
data: '&go=' + tab,
success: function(data) {
setTimeout("pencil()",3250);
setTimeout('$("#content").html(data).fadeIn()',5000);
}
});
The problem is that the "content" is not loaded this way after 5 seconds. However if I put it without the setTimeout it appears right away - but that way it smashes the animation.
How can I fix this?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您在传递给
setTimeout
的字符串中使用了变量data
,但在执行该字符串时该变量将不再存在。您可以通过使用函数对象而不是字符串来解决此问题:
这是有效的,因为
data
的值保存在闭包中。You are using the variable
data
in the string passed tosetTimeout
, but that variable will no longer exist when the string is executed.You can fix this by using a function object instead of a string:
This works because the value of
data
is held in a closure.问题可能是将 jquery 代码放在字符串输入的 setTimeout 中。
试试这个:
我认为这应该可行。您以前的方法的问题是 setTimeout 无法运行带有输入的函数,例如如果您写了“pencil(data);”这也行不通。
The problem is probably putting jquery code in the setTimeout in string input.
Try this:
I think this should work. The problem with your previous approach is setTimeout cannot run functions with inputs for example if you wrote "pencil(data);" it wouldn't work either.
您需要将 jQuery 调用包装在函数中
You need to wrap your jQuery call in a function