web-dev-qa-db-ja.com

役に立たないsetTimeout呼び出し(引数の前後に引用符がありませんか?)

私は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、Firefox6以降は問題ありません。それについて何かアイデアはありますか?なぜこれが起こっているのでしょうか?

18
kosta5

JQuery-method delay がすでに存在し、パラメーターとして関数ではなくstring(queueName)を想定しています。競合を避けるために、delay-methodに別の名前を選択してください。

6
Dr.Molle

書いたときに同じエラーが発生しました

setTimeout(updateStatus(), 5000);

の代わりに

setTimeout(updateStatus, 5000);
17
wsbaser

Wsbaserに同意します。関数に情報を渡すために必要な追加のインスタンスがあり、簡単にするために次のように使用しました。

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

引数は、呼び出される関数ではなく、関数である必要があります。 Firefoxがこのエラーをキャッチしました、chrome手放してください。

10
mpickell

誰かがこの質問に出くわし、可能な答えを探している場合の参考のために。 setTimeout引数の順序を混同していたため、最初の投稿者とまったく同じエラーメッセージが表示されました。

この:

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

...エラーメッセージが表示されました。関数を次のように変更しました。

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

そして、私の問題は解決されました。

7
polyclick