2011-11-21 33 views
19

我在jQuery的这个sniplet代码无用的方法setTimeout(失踪各地参数报价?)

$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); 
    }); 
}; 

现在我得到的错误:

useless setTimeout call (missing quotes around argument?)

FF3.x,Firefox 6+可以。有关于此的任何想法?为什么会发生这种情况?

回答

7

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

+0

对不起,说,但没有修复它 – kosta5

+16

为什么这是公认的答案,如果这没有解决它? –

+2

这是一个谜... – Tebe

-2

的问题是在Firefox 3。它不处理某些元素正确=>元素在树完全忽略和忽视 - >因此,我原来的问题

+5

非常无益和不具说服力的答案。 – Cyprus106

7

仅供参考,如果有人绊倒在这个问题,是寻找可能的答案。我得到了与第一张海报完全相同的错误信息,因为我混合了参数顺序setTimeout

此:

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

...给我的错误信息。我改变了功能,以这样的:

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

我的问题得到解决。

17

我得到了同样的错误,当我写

setTimeout(updateStatus(), 5000); 

,而不是

setTimeout(updateStatus, 5000); 
+0

OP已经正确调用了该方法!这不是问题。他已经在第一个参数中传递了一个指向函数的指针。 – gcb

10

我wsbaser同意。我具有将信息传递给该函数所需的额外实例,并为简化起见使用:

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

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