2016-09-21 9 views
2

このスクリプトを使用して、クラスに基づいてelemetsをフィルタリングします。現在、以前の機能を停止し、新しいクラスをフェードインします。fadeInの前にfadeOutを追加

基本的に私はfadeinセレクタを開始する前にすべてをフェードアウトする必要があります。現在は、100%の不透明度からセレクタのフェードインを開始するまでの鋭いカットです。私は、現在の(または特定のクラス)をスムーズにフェードアウトし、その後、フェードインします。

私のコード:

$('div.tags').delegate('input[type=radio]', 'change', update); 
 
    update(); 
 
    function update() { 
 
     var $lis = $('.results > div'), 
 
      $checked = $('input:checked'); 
 
     if ($checked.length) { 
 
      var selector = $checked.map(function() { 
 
       return '.' + $(this).attr('rel'); 
 
      }).get().join(''); 
 
    
 
      $lis.hide().filter(selector).stop().fadeIn(1000, 'easeInCirc'); 
 
    
 
     } else { 
 
      $lis.stop().fadeIn(1000, 'easeInCirc'); 
 
     } 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="tags"> 
 
     <label class="odseba"> 
 
     <input class="fadeout" type="radio" checked="checked" rel="all" name="gg" /><span>VŠETKO</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="web" name="gg" /><span>WEB</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="eshop" name="gg" /><span>ESHOP</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="seo" name="gg" /><span>SEO</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="grafika" name="gg" /><span>GRAFIKA</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="logo" name="gg" /><span>LOGO</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="reklama" name="gg" /><span>REKLAMA</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="kampan" name="gg" /><span>KAMPAŇ</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="branding" name="gg" /><span>BRANDING</span></label> 
 
     <label class="odseba"> 
 
     <input type="radio" rel="print" name="gg" /><span>PRINT</span></label> 
 
     </div> 
 

 
and these are idems being filtered: 
 

 
    <div class="span4 thumb-pad0 all web eshop print seo"> 
 
     <div class="thumbnail"> 
 
      <figure><a href="img/img5.jpg"><img src="img/page3_pic5.jpg" alt=""></a></figure> 
 
      <div class="caption"> 
 
       <h2 style="font:28px/28px 'Century Gothic', 'Century Gothic', Arial, Helvetica, Century Gothic; color:#FFF; text-transform:uppercase; margin:0;">Name</h2> 
 
       <p>lorem ipsum</p> 
 
      </div> 
 
     </div> 
 
    </div>

答えて

1

フェードアウト()へのコールバックとしてフェードインを()に渡し:

} else { 
    $("elements-to-fade-out").fadeOut(1000, "easeInCirc", function() { 
     $lis.stop().fadeIn(1000, 'easeInCirc'); 
    }); 
} 

また、行うことができます:

} else { 
    $("elements-to-fade-out").fadeOut(1000, "easeInCirc"); 

    // Fade in after 1000 
    // 
    setTimeout(function() { 
     $lis.stop().fadeIn(1000, "easeInCirc"); 
    }, 1000); 
} 

コールバックの詳細についてはこちらをご覧ください:

http://www.w3schools.com/jquery/eff_fadein.asp 
+0

私はこれを行いました:/ –

+0

明らかに、fadeOut()のセレクタをフェードを適用する要素に変更する必要があります。また、「イージング」は実際の選択肢ではありません。ちょうどプレースホルダです しかし、コールバックルーチンを渡す場合、正しい/必要な変更を加えればうまくいくはずです。 – Nunchy

1

フェードすべての要素を、その後に特定の要素をフェードするcallback機能を使用します。それは時に動作を停止

$lis.fadeOut(1000, 'easeInCirc', function(){ 
    $(this).filter(selector).fadeIn(1000, 'easeInCirc'); 
}); 

http://plnkr.co/edit/0wkJGOgK3hxIfLX3RqKF?p=info

関連する問題