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

18

我在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
    });
});

delay 的声明如下:

jQuery.fn.delay = function(time,func){
    return this.each(function(){
        setTimeout(func,time);
    });
};

现在我遇到了这个错误:

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

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

5个回答

17

当我写下相同的代码时,我遇到了相同的错误。

setTimeout(updateStatus(), 5000);

取代

setTimeout(updateStatus, 5000);

OP已经正确地调用了该方法!这不是问题所在。他已经将一个函数指针作为第一个参数传递了进去。 - gcb

10

我同意wsbaser的观点。我需要向函数传递信息,为了简单起见,我使用了以下代码:

setTimeout(function(){ updateStatus(myData) } , 5000);

参数应该是一个函数而不是被调用的函数。Firefox 捕获了这个错误,Chrome 却让它通过。


7

如果有人偶然发现了这个问题并寻求可能的答案,以下是参考。我和最初的发布者收到完全相同的错误消息,因为我混淆了setTimeout参数的顺序。

代码如下:

setTimeout(25, function(){
    spotlight.intro.find('#intro').ellipsis();  
});

...给我报错了。我把函数改成了这样:

setTimeout(function(){
    spotlight.intro.find('#intro').ellipsis();
}, 25);

我的问题得到了解决。

6

已经存在一个名为delay的jQuery方法,它期望参数是一个字符串(queueName),而不是一个函数。 选择另一个名称作为您的延迟方法,以避免冲突。


很抱歉说这个,但那并没有解决它。 - kosta5

-1
问题出在Firefox 3上。它无法正确处理某些元素 => 元素在树中完全被省略和忽略 -> 因此导致了我的原始问题。

5
不太有帮助且缺乏具体描述的回答。 - Cyprus106

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接