2012-01-15 6 views
2

CSSクラスを追加することで、特定のHTML要素を非表示にすると便利な場合があります。このクラスにはdisplay: noneが設定されています。このjsFiddle exampleをご覧ください。 CSSクラスによって「隠されている」HTML要素をフェードアウト

<!-- HTML --> 
<a id="toggle-a" href="javascript:void(0);">Hide A</a> 
<p id="p-a">A</p> 

/* CSS */ 
.hide { 
    display: none; 
} 

/* jQuery */ 
$("#toggle-a").click(function() { 
    $("#p-a").addClass("hide"); 
}); 

は、我々はそれに .hideを適用するとき p#aをアニメーション/フェードアウトする方法はありますか?

EDIT: 私の前の質問が明確でない場合は申し訳ありません。私は次の点に興味があります:CSSレベルのプロパティ変更時に.fadeOut()をトリガーできますか?上記の例では、p#adisplayが変更されたときですnoneからnoneに変更されますか? displayプロパティはhideという名前のクラスを適用することによって異なるスクリプトによってnoneに変更されていることに注意してください。

+1

[フェードアウト() ''](HTTPへの道があるかどうあなたが求めています。?: //api.jquery.com/fadeOut/)jQueryで何か? –

+1

このようなものhttp://jsfiddle.net/afTdk/1/または[this](http://jsfiddle.net/afTdk/2/)( 'fadeIn'と' fadeOut')? –

答えて

4

これは非常に基本的なjQueryです。フェードインまたはフェードアウトします。 JavaScriptのみが実際に多くのポイントは、クラスの変更のために、いくつかの別のリスナーを取り付けるには存在しない、クラスを変更することができますのでhttp://jsfiddle.net/afTdk/4/

$("#toggle-a").click(function() { 
    $("#p-a").fadeToggle(); 
}); 

デモ:あなたはここにfadeToggle()を使用することができます。

+0

@Madmartiganのおかげで、jQueryのCSSプロパティに変更があったときに、例えば 'display:block'から' display:none'への変更があると "監視"する方法があります。 ? – moey

+0

あなたは* any *プロパティの変更を聞くことを意味しますか?私は正確にはわかりません、あなたはあなたが達成しようとしているものを正確に把握する方が良いと思います。 if($( "element").css( 'display')=== 'block') 'を使うことができます。たぶん 'getComputedStyle'を使ったものです。私はあなたが 'setTimeout'でそれをラップすることができると思うが、それは無駄に思える。 –

+0

はい、* any *プロパティのリスナーが変更されます。たぶんデフォルトのjQueryメソッドやプラグインなど。誰が変更をトリガしたかにかかわらず、 'p#a 'のCSS変更があるたびに発生する' $('#p-a ')。onCSSChange(/ * callback * /); – moey

1

jQuery fadeIn()と​​の機能を確認してください。例:

$("#toggle-a").click(function() { 
    $("#p-a").fadeOut(); 
}); 
1

これはあなたが探しているものですか?

$("#toggle-a").click(function() { 
    $("#p-a").animate({'marginLeft':'200px'}, function() { 
     $(this).addClass('hide'); 
    }); 
}); 

あなたは@Madmartiganによって回答に基づいてjQueryのアニメーションについてhereを読むことができるし、また、「コールバック」(完全なパラメータ)と呼ばれる機能を見てみることを忘れないでください

0

、私は私がだったと思います現在、jQueryでは利用できないものを探しています。 jQueryが自動的にを監視する方法はありません。特定のHTML要素で発生するCSSの変更。あなたは基本的に手動で例えばif($("element").css('display') === 'block')」ではなく、それを実行する必要があり

はたぶんこれはjQueryのための未来の要求とすることができます:)

関連する問題