2

画像がロードされた後に遅延を導入しようとしていますが、.delay() をスキップし続けます

$(\"#output\").html(\"<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>\").delay(5000);

上記のコードの多くのバージョンを試しましたが、まだ機能しません

ヘルプの人に感謝します。

4

4 に答える 4

1

jQueryのドキュメントから

.delay() メソッドは、キューに入れられた jQuery エフェクト間の遅延に最適です。制限があるため (たとえば、遅延をキャンセルする方法は提供されません)、.delay() は JavaScript のネイティブな setTimeout 関数に代わるものではなく、特定のユース ケースにより適している場合があります。

画像が読み込まれ、遅延が発生し、次に何が起こるかはあなた次第です。でも .delay は に付いているので#outputでしかできません#output。たとえば、フェードアウトできます。

$("#output").html("<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>").delay(5000).fadeOut();

http://jsfiddle.net/M2GRj/

画像がロードされる前に遅延が必要な場合は、html を設定する前に遅延を使用します。

$("#output").hide().delay(5000).html("<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>").fadeIn();

http://jsfiddle.net/M2GRj/3/

画像がロードされた後に一時停止を誘発し、それから何か独立したものにしたい場合は、画像に ID を与え、ロード イベントで setTimeout を使用して関数を呼び出します。

$("#output").html("<center><img id='img1' src='http://i.imgur.com/GM6KJdh.gif' /></center>");
// Note: You can only use this after #img1 has been added to the DOM
$('#img1').load(function(){setTimeout('alert("hello")',5000);});

http://jsfiddle.net/M2GRj/5/

于 2013-01-19T12:04:35.660 に答える
1

jQuery のドキュメントで説明されているように、.delay()(同じ要素の) 後続のアニメーションのみを遅延させる jQuery アニメーション メソッドであり、非アニメーション メソッドの結果を遅延させず、コードの実行を「一時停止」しません。したがって、表示されているコードの後に​​あるコード行は、すぐに実行されます。

あなたがしようとしていることは、次の行を実行する前に2秒待つことだと仮定すると、これを行うことができます:

$("#output").html("<center><img src='http://i.imgur.com/GM6KJdh.gif' /></center>");
setTimeout(function() {
   // your other code here
}, 2000);

これは、JavaScript の組み込みsetTimeout()関数を使用して、渡した関数に入力したコードの実行を遅らせます。

于 2013-01-19T12:06:46.613 に答える
1

AFAIKdelay()関数は、後続のキュー内の関数を遅らせるだけです。したがって、 の後に別の関数を呼び出す必要がありますdelay()

多分あなたは試すことができます

.delay(5000).finish();
于 2013-01-19T12:02:58.263 に答える
0

jQuery API は次のように述べています。

.delay() メソッドを使用すると、キュー内でそれに続く関数の実行を遅らせることができます。標準のエフェクト キューまたはカスタム キューで使用できます。キュー内の後続のイベントのみが遅延されます

例として、以下を確認してください

以下のステートメントが実行されると、要素は 300 ミリ秒間上にスライドし、800 ミリ秒間一時停止してから 400 ミリ秒間フェードインします。

$('#foo').slideUp(300).delay(800).fadeIn(400);

遅延後に後続のイベントがない場合は、使用できますJavaScript's native setTimeout function

使い方はsetTimeout function

setTimeout(function() {
  //your code
}, 2000);  // will work with every browser

詳細については、.delay()およびsetTimeoutを確認してください。

于 2013-01-19T12:09:14.870 に答える