2014-05-23 59 views
0

任何人都可以告訴我爲什麼我的IF語句在更新每個循環的UI之前觸發?帶有IF語句的jquery延遲函數

代碼基本上想要延遲添加css類到用戶界面,然後一旦每個添加,重定向用戶。它目前只是立即指示?!

$("#logo").click(function() { 

    //define variables: 
    var eventDuration = 500; 
    var elementArray = ['ribbon', 'left-panel', 'wid-id-1', 'wid-id-2']; 
    var animationArray = ['slideOutRight', 'slideOutLeft', 'rotateOutUpRight', 'rotateOutUpRight']; 

    //Loop through elements and update UI with timer function: 
    $.each(elementArray, function(index, value) { 

     //Increments the delay of the element updates: 
     var delaytimer = index * eventDuration + eventDuration; 

     //Adds animation css classes to onpage elements: 
     $('#' + value).delay(delaytimer).queue(function() { 
      $(this).addClass('animated ' + animationArray[index]).dequeue(); 
     }); 

     //Once complete redirect to the home page: 
     if (index === 3) { 
      $(this).delay(delaytimer + 500).queue(function() { 
       window.location.replace('/').dequeue; 
      }); 
     } 

    }); 
}); 
+0

還歡迎任何批評上面的jquery。很確定,我不需要在位置替換結束時出現「退出」。其他任何事情都會有助於瞭解......善良! –

+0

放一個'console.log(delaytimeer)'並檢查計算的值。把它放在這行下面'var delaytimer = index * eventDuration + eventDuration;'並在這裏發帖 – Yasser

回答

1

您的if語句正在立即執行,因爲它不在延遲函數中。嘗試在那裏移動它。

$('#' + value).delay(delaytimer).queue(function() { 
     $(this).addClass('animated ' + animationArray[index]).dequeue(); 


     //Once complete redirect to the home page: 
     if (index === 3) { 
      $(this).delay(delaytimer + 500).queue(function() { 
       window.location.replace('/').dequeue; 
      }); 
     } 
    }); 
+0

謝謝!現在完美運作。 –

+0

很高興,很高興提供幫助。 –