我在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+还可以。有什么想法吗?为什么会发生这种情况?
答案 0 :(得分:17)
我写
时遇到同样的错误setTimeout(updateStatus(), 5000);
而不是
setTimeout(updateStatus, 5000);
答案 1 :(得分:10)
我同意wsbaser。我有额外的实例需要将信息传递给函数,并且为了简单起见使用:
setTimeout(function(){ updateStatus(myData) } , 5000);
参数需要是一个函数而不是被调用的函数。 Firefox发现了这个错误,Chrome就让它消失了。
答案 2 :(得分:7)
仅供参考,如果有人偶然发现这个问题,并且正在寻找可能的答案。我得到了与初始海报完全相同的错误消息,因为我混淆了setTimeout
参数顺序。
此:
setTimeout(25, function(){
spotlight.intro.find('#intro').ellipsis();
});
...给了我错误信息。我将功能更改为:
setTimeout(function(){
spotlight.intro.find('#intro').ellipsis();
}, 25);
我的问题解决了。
答案 3 :(得分:6)
已经存在一个jQuery方法delay,它需要一个字符串(queueName)而不是一个函数作为参数。 为延迟方法选择另一个名称以避免冲突。
答案 4 :(得分:-2)
问题出在Firefox 3中。它没有正确处理某些元素=>树中完全省略了元素并忽略了 - >因此我原来的问题