jQuery不显示setTimeout的内容

时间:2011-04-27 11:16:45

标签: 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的情况下它会立即出现 - 但这样就会破坏动画。

我该如何解决这个问题?

谢谢。

3 个答案:

答案 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
    }
});