web-dev-qa-db-ja.com

jQuery .delay()は.html()関数を遅らせません

Divをフェードアウトし、そのコンテンツを置き換えて、フェードインするためのちょっとしたjavascriptトリックを実行しようとしています。

_$("#products").fadeOut(500)
              .delay(600)
              .html($("#productPage" + pageNum).html())
              .fadeIn(500);
_

appears.html().delay()メソッドによって遅延されていないこと。

27
Derek Adair

delayは、次のように queue と一緒に使用すると、あなたのケースで機能します。

$("#products").fadeOut(500)
    .delay(600)
    .queue(function(n) {
        $(this).html("hahahhaha");
        n();
    }).fadeIn(500);​

ここで試してみてください: http://jsfiddle.net/n7j8Y/

41
karim79

fcallback関数パラメーターを使用して、fadeOutが完了したときに変更するように変更できます。

したがって、次のようになります。

$("#products").fadeOut(500, function() {
    $(this).html($("#productPage" + pageNum).html());
    $(this).fadeIn(500);
});
1
Alastair Pitts

たぶん「キュー」の方法で大丈夫ですが、このjavascriptソリューションは私にとってよりうまく機能します:

    setTimeout (function(){
      $("#products").html('Product Added!');
    },1000);
1
gtamborero