フェードイン効果のある要素を追加する[jQuery]


121
var html = "<div id='blah'>Hello stuff here</div>"

$("#mycontent").append(html).fadeIn(999);

これは機能していないようです。

コンテンツが追加されたときにクールな効果が欲しいだけです。

注:「mycontent」全体ではなく、新しい「何とか」のdivだけをフェードインさせたいです。


回答:


262
$(html).hide().appendTo("#mycontent").fadeIn(1000);

1
私がフェードインするだけで、新たな「何とか」のdivをしたい。
TIMEX

@TIMEX:これがこれを行うべきです。
icktoofay 2011年

最初に非表示にしてから追加する理由があります(DOMにアタッチする前にスタイルを最初に設定する方が速いためなど)、または違いがありませんか?
qwertymk '14年

2
@qwertymk:本当の理由はありません。DOMが操作されている間にブラウザーがレンダリングされた場合(現在のところ、私の知る限りではブラウザーは機能しません)、フェードインが始まる前にコンテンツがフラッシュすることはありません。ここでも、それほど重要ではありません。
icktoofay 2011年

1
@ArthurTarasov:それは#blahそれ自体に追加されますが、これはあなたがやりたいことのようには思えません(そして私はそれが何もしないと解釈されていると思います)。.appendToパーツをドロップして使用することもできます$('#mycontent').hide().fadeIn(1000)
icktoofay 2017

52

もう少し情報を追加します:

jQueryは「メソッドチェーン」を実装しています。つまり、同じ要素でメソッド呼び出しをチェーンできます。最初のケースでは:

$("#mycontent").append(html).fadeIn(999);

fadeInこの場合、メソッドチェーンのターゲットであるオブジェクトへの呼び出しを適用します#mycontent。あなたが望むものではありません。

@icktoofayの(素晴らしい)答えには次のようなものがあります。

$(html).hide().appendTo("#mycontent").fadeIn(1000);

これは基本的には、作成手段htmlデフォルトでは非表示として、それを設定し、それを追加#mycontentし、その後でそれをフェードイン。メソッドチェーンのターゲットは今hmtlの代わりに#mycontent


18

これも機能します

$(Your_html).appendTo(".target").hide().fadeIn(300);

よろしく


これは、HTMLが完全に構成され、それがフェードインする前に必要な寸法を作成することすることができますようにフェージングを処理する最も美的な方法です。
アントニオNogueras

0

fadeInは非表示から表示への遷移なので、追加するときに「html」要素を非表示にしてから表示する必要があります。

var html = "<div id='blah'>Hello stuff here</div>"

$("#mycontent").append(function(){
  return html.hide();
});

$('#blah').fadeIn(999);

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.