2011-07-18 25 views
1

私は迷っています。このコードでは、#optionsはフェードインする必要がありますが、そうではありません。 CSSの属性は設定されています。コールバックが正しく機能しない

$("#content > p").animate({ opacity: '0' }, function() { 
    $(this).css("display", "none"); 
    $("#options").css("opacity", "0").show(0, function() { 
     $("#options").fadeIn(); 
    }); 
}); 
+0

'$("#options ").fadeIn();'これで十分でしょう。 – Ibu

+0

ですが、display:block、つまりshow関数も設定する必要があります。 –

答えて

2

opacityはまだ0として設定されています。

あなたはfadeIn()に...

$("#options").animate({ opacity: 1}, 500); 

jsFiddleを変更することができます。

+0

はい、私はそれを後でフェードインするように設定しました。 –

+2

あなたの編集をありがとう。完璧に動作します。 –

+0

@John - これがあなたの質問に答える場合は、質問の隣にあるチェックマークをクリックしてください。私はできるだけ私にあなたにそれを与えるだろう:@(私のアレックスはポイントを必要としない、あなたを思い浮かべる...:P) –

0

コードを単純化することができます。不透明度を0に設定するとvisibility:hidden CSS属性が複製されますが、​​はdisplay:none CSS属性を複製します。これら2つの重要な違いの1つは、後者がレンダリングされたDOMから要素を削除し、画面上のスペースを占有せず、周囲のノードがその要素を認識しないことです。前者は、要素がまだである大きな空のボックスを作成しますが、それを見ることはできません。それが動作するはずのよう

$('#content > p').fadeOut('slow', function() { 
    $('#options').fadeIn(); 
}); 
+0

あなたはわかりません。それはdisplay:none;デフォルトでは、それをブロックするためにshow関数が必要になります。 –

+0

'fadeIn()'は自動的に 'display:block'に設定します – AlienWebguy

2

がようだが、どうやらあなたはfadeIn()[docs]メソッドの代わりにfadeTo()[docs]メソッドを使用する必要があるだろう:あなたが最も一般的である後者を使用したいと仮定すると、これは動作するはずです。

$('img').css("opacity", 0).show(0,function() { 
    $(this).fadeTo(400, 1); 
}); 

あなただけ行うことができるときshow(0,func..は、ここでちょっと無意味に見えるが:

$('img').css("opacity", 0).show().fadeTo(400, 1); 

...あなたが.show()期間に与えている0が実際にその変数でない限り、より大きい数を参照することがあります。

関連する問題