2011-12-07 21 views
0

3秒後に...アラートのプロンプトが表示されません。私は間違って何をしていますか?3秒後にjQuery遅延が働いていない

$(function() { 
    $("#test").live("click",function() { 
     $("#test2").delay(3000, function({ 
      alert('Hello!'); 
     })); 
     }); 
    }); 
+3

私はそれを言うことを憎むが、RTFD、あなたは '.delayは()'単にそのように動作しないことがわかります:http://api.jquery.com/delay –

+0

@weka:場合でも、あなたの '.delay()'の使用が正しかった、あなたの構文が壊れている。この部分は有効ではありません: 'function({alert( 'Hello!');})' – RightSaidFred

答えて

5

.delay()はコールバックを受け付けません。 setTimeoutを使用してください。

$(function() { 
    $("#test").live("click",function() { 
     setTimeout(function() { alert('Hello!'); }, 3000); 
    }); 
}); 

私はあなたが技術的それは.delay()で動作させることができますが、あなたの例を考えると、それだけで適切ではないだろうか、あなたを示すことができます。

0

次の連鎖関数呼び出しを遅らせるためにjQueryの遅延が使用されると思います。あなただけfadeIn()、などのようなアニメーションキューを使用してjQueryのエフェクトの方法で動作します...そして、.delay()はコールバックを受け入れていない代わりにsetTimeout

$("#test").live("click",function() { 
    setTimeout(function(){ 
     alert('Hello!'); 
    }, 3000); 
});
0

.delay()を使用する必要があります。あなたはこのようsetTimeout()を使用する必要があります

:どこ

$(function() { 
    $("#test").live("click",function() { 
     setTimeout(function() { 
      alert('Hello!'); 
     }, 3000); 
    }); 
}); 
2

はそれがdelay()は、そのフォームでパラメータを受け入れることを文書化しています。

$(function() { 
    $("#test").live("click", function() { 
     setTimeout(function() { 
      alert('Hello!'); 
     }, 3000); 
    }); 
}); 

実際delay()ドキュメントは大胆文を持っています。

.delay()メソッドは、キューに入れられたjQueryエフェクト間の遅延に最適です。制限されているため、遅延をキャンセルする方法はありません.delay()は、JavaScriptのネイティブsetTimeout関数を置き換えるものではありません。これは特定の使用例に適しています。

+0

+1、最も関連性の高い部分です。 – RightSaidFred

関連する問題