2013-05-17 60 views
-1

我已經創建了一個jQuery函數,它可以重複地從頂部50px到頂部150px一個接一個地重複動畫元素。在重複的jQuery動畫中放置延遲()的問題

我正試圖在每個單獨元素的動畫之間創建一個暫停(而不是迭代之間的暫停)。在第一次迭代中,沒有任何反應。在下面的函數中,函數會考慮delay(),但只考慮元素的一部分。

您可以在下面的鏈接中看到整個行動。

THE ENTIRE CODE

$(".but").click(function() { 
     function repeat() { 
      var count = $(".box").length; 
      $($(".box").get().reverse()).each(function(i) { 
       $(this).delay(600 * i).animate({ 
        top: "150px", 
        duration: 600, 
        easing: "linear", 
        complete: function() { 
         $(".box").each(function(i) { 
          $(this).delay(500); 
         }); 
         if (count == 0) { 
          $(".box").css("top", "50px"); 
          repeat(); 
         }; 
        } 
       }); 
      }); 
     }; 
     repeat(); 
    }); 
+3

那麼,你的問題是什麼? –

+0

您的jsfiddle代碼在click事件函數內調用'repeat()' –

+0

爲什麼dealy函數僅在第二次迭代後才起作用?即便如此,爲什麼它只適用於某些元素? –

回答

1

您有這方面下complete:

$(".box").each(function(i){ 
    $(this).delay(500); 
}); 

我把它給之前$(this).delay(600 * i).animate [...]

現在塊有他們之間的延遲。

這是你想要的嗎? http://jsfiddle.net/HdpPj/12/

+0

是的,謝謝,它現在工作完美! –

+0

祝你好運與你的動畫。 :) –