无用的setTimeout调用(参数周围缺少引号?)

kos*_*ta5 18 javascript jquery settimeout firefox3.6

我在jQuery中有这段代码

$element.parent().children().last().hide().show('slide', {direction : 'left'}, 700, function () {
    $element.delay(2000, function() {
        $element.parent().children().last().hide('slide', {direction: 'left'}, 700);             
        reload_table(question_number);
        //delay ends here
    });
});
Run Code Online (Sandbox Code Playgroud)

delay 声明为:

jQuery.fn.delay = function(time,func){
    return this.each(function(){
        setTimeout(func,time);
    });
};
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

无用的setTimeout调用(参数周围缺少引号?)

FF3.x,Firefox 6+还可以.有什么想法吗?为什么会发生这种情况?

小智 17

我写的时候遇到同样的错误

setTimeout(updateStatus(), 5000);
Run Code Online (Sandbox Code Playgroud)

代替

setTimeout(updateStatus, 5000);
Run Code Online (Sandbox Code Playgroud)


mpi*_*ell 10

我同意wsbaser.我有额外的实例需要将信息传递给函数,为简单起见:

setTimeout(function(){ updateStatus(myData) } , 5000);
Run Code Online (Sandbox Code Playgroud)

参数需要是一个函数而不是被调用的函数.Firefox发现了这个错误,Chrome让它走了.


pol*_*ick 7

仅供参考,如果有人偶然发现这个问题并且正在寻找可能的答案.我得到了与初始海报完全相同的错误消息,因为我混淆了setTimeout参数顺序.

这个:

setTimeout(25, function(){
    spotlight.intro.find('#intro').ellipsis();  
});
Run Code Online (Sandbox Code Playgroud)

...给了我错误信息.我将功能更改为:

setTimeout(function(){
    spotlight.intro.find('#intro').ellipsis();
}, 25);
Run Code Online (Sandbox Code Playgroud)

我的问题解决了.


Dr.*_*lle 6

已存在jQuery方法延迟,它需要一个字符串(queueName)而不是函数作为参数.为延迟方法选择另一个名称以避免冲突.

  • 为什么这是接受的答案,如果这没有解决它? (16认同)