問題
jQueryでフェードイン、フェードアウト後に追加処理をさせるには?
解決策
- フェードイン … 「fadeIn('スピード',function(){ // コールバック処理 });」で処理を記述する。
- フェードアウト … 「fadeOut('スピード',function(){ // コールバック処理 });」で処理を記述する。
フェードイン、フェードアウトのコールバック
jQueryでフェードイン、フェードアウト後に追加処理(コールバック)を行うには、以下の記述を行います。
$('セレクタ').fadeIn('スピード',function(){
// コールバック処理
});
$('セレクタ').fadeOut('スピード',function(){
// コールバック処理
});
- スピードは「slow」、「normal」、「fast」の3つから選ぶことができます。
クリックでフェードイン、フェードアウトを交互に行うボタンの記述例
DEMOはこちら
- ※「切り替え」ボタンをクリックする度に、下のブロックがフェードイン、フェードアウトを繰り返し、その度にすぐ下のテキストの記述が書き換わります。
HTML
<div class="fadeinout-box">
<p class="btns">
<a href="#">切り替え</a>
</p>
<div class="target">
<p>上のボタンをクリックする度にフェードイン、フェードアウトを繰り返します。</p>
</div>
<p class="status">ステータス</p>
</div>
CSS
.fadeinout-box .btns{
text-align: center;
}
.fadeinout-box .btns a{
display: inline-block;
padding: 1px 10px;
color: #ffffff;
text-decoration: none;
background-color: #F15A24;
}
.fadeinout-box .target{
padding: 10px;
background-color: #fef5f2;
}
.fadeinout-box .status{
margin: 10px;
font-weight: bold;
text-align: center;
}
javascript
if($('.fadeinout-box .btns a').length){
$('.fadeinout-box .btns a').click(function(){
if( $(this).hasClass('on') ){
$(this).closest('.fadeinout-box').find('.target').stop().fadeIn('normal',function(){
$(this).closest('.fadeinout-box').find('.status').html('フェードインのコールバック');
});
}else{
$(this).closest('.fadeinout-box').find('.target').stop().fadeOut('normal',function(){
$(this).closest('.fadeinout-box').find('.status').html('フェードアウトのコールバック');
});
$(this).addClass('on');
}
})
}
コメント