あなたが抱えている問題は.delay()
、ネイティブの代わりに使用しようとしているということです。setTimeout()
これは意図したものではありません。この.delay()
関数は、別の関数の実行を遅らせるのではなく、jQuery アニメーション効果の間に一時停止を追加するように設計されており、コールバック関数を受け入れません。関数については、jQuery のドキュメントを参照してください.delay()
。
以前の回答で既に説明したように、ネイティブsetInterval()
関数を使用して、後の遅延を実装できます。
function random(){
$("#randomImage1").animate({opacity: '0.0'}).load("../images/randomImage.php").animate({opacity: '1.0'});
setInterval(random, 2000);
}
random();
これにより、要素がアニメーション化されて完全な不透明度に戻り、AJAX 呼び出しが成功の応答を返さなかった#randomImage1
場合でも、関数を再度呼び出す間隔が設定されることに注意してください。.load()
それが望ましくない場合は、代わりに、次のように、そのコードを成功コールバックとして渡された無名関数に移動できます.load()
。
function random(){
$("#randomImage1").animate({opacity: '0.0'}).load("../images/randomImage.php",
function() {
$("#randomImage1").animate({opacity: '1.0'});
setInterval(random, 2000)
});
}
random();