jQuery 不显示带有 setTimeout 的内容

发布于 2024-11-03 08:01:35 字数 460 浏览 2 评论 0原文

我试图在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

猫弦 2024-11-10 08:01:35

您在传递给 setTimeout 的字符串中使用了变量 data,但在执行该字符串时该变量将不再存在。

您可以通过使用函数对象而不是字符串来解决此问题:

setTimeout(function() { 
    $("#content").html(data).fadeIn() 
}, 5000);

这是有效的,因为 data 的值保存在闭包中。

You are using the variable data in the string passed to setTimeout, 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:

setTimeout(function() { 
    $("#content").html(data).fadeIn() 
}, 5000);

This works because the value of data is held in a closure.

病女 2024-11-10 08:01:35

问题可能是将 jquery 代码放在字符串输入的 setTimeout 中。
试试这个:

setTimeout(function(){$("#content").html(data).fadeIn()},5000);

我认为这应该可行。您以前的方法的问题是 setTimeout 无法运行带有输入的函数,例如如果您写了“pencil(data);”这也行不通。

The problem is probably putting jquery code in the setTimeout in string input.
Try this:

setTimeout(function(){$("#content").html(data).fadeIn()},5000);

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.

来日方长 2024-11-10 08:01:35

您需要将 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
    }
});

You need to wrap your jQuery call in a function

$.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
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文