2013-10-15 68 views
1

我輸入了一些代碼淡入淡出包括導航器在內的一些div。jQuery FadeIn,FadeOut垃圾郵件問題

我注意到一個錯誤,當你快速點擊導航器並嘗試通過垃圾郵件按鈕非常快速地更改div時,div將被竊聽,如果你將檢查代碼,你會看到divs正在消失在0.5以內不透明度,或者有時甚至是0.12,並且淡出到0.0到0.09或類似的東西。

這是我的代碼:

$(document).ready(function(){ 

    var currentDiv = $("#fading_divs div:first"); 
     currentDiv.css("display","block"); 
    var divN = $("#fading_divs div").length; 
    var fadeInterval; 


    for(i=0; i<divN; i++){ 
     $('<span />').text(i+1).appendTo('#fade_nav'); 
    } 

    $('#fade_nav span').eq(0).addClass('active'); 


    $('#fade_nav span').click(function(){ 
     clearInterval(fadeInterval); 
     $('#fade_nav span').removeClass('active').eq($(this).index()).addClass('active');  

     currentDiv.fadeOut({duration:1000,queue:false}); 
     currentDiv = $("#fading_divs div").eq($(this).index()); 
     currentDiv.fadeIn({duration:1000,queue:false}); 

     anim(); 


    }); 

    function anim() { 
     fadeInterval = setInterval(function(){ 
      currentDiv.fadeOut({duration:1000,queue:false}); 

      if(currentDiv.next().length) 
       currentDiv = currentDiv.next(); 

      else 
       currentDiv = currentDiv.siblings().first(); 

      $('#fade_nav span').removeClass('active').eq(currentDiv.index()).addClass('active'); 
      currentDiv.fadeIn({duration:1000,queue:false}); 
     }, 4000); 
    } 

    anim(); 

}); 

這裏是一個小提琴:http://jsfiddle.net/b5PfE/

嘗試垃圾郵件的導航按鈕,直到你將看到的div勉強褪色或縮小。

有關如何解決它的任何建議?

回答

0

這是怎麼了,我通常解決這樣的問題:( '激活 ')

  1. 添加類的 「激活」
  2. 使用$您#fade_nav跨度生活(' 點擊'。 function(event){//});啓動您的功能
  3. 在該功能中,首先從#fade_nav中刪除激活的類。這將防止按鈕在動畫過程中被點擊。
  4. 在函數結束時,重新添加.activated類,以便按鈕再次可點擊。
+0

如果可能,請爲我提供一個jsfiddle,我失去了你一點點:/ BTW'.live()'已棄用,並且自從1.9 – kfirba

+1

使用'live'? 「活着」[已死](http://api.jquery.com/live/),男人。 – MikeSmithDev

+0

對不起,我目前沒有時間。我認爲你的問題是你在一箇舊的動畫完成之前開始一個新的動畫。所以如果你可以在動畫期間禁用你的按鈕,你可以避免這個問題。 – kthornbloom