2015-08-28 63 views
0
var delay = 0; 
    var interval = 1000; 
    var reload = function() { 
    setTimeout(function(){ 
     $('.bl').each(function(i){ 
      $(this).delay(delay).animate({ 
       height: '150px' 
      },500); 
      delay += interval; 
     }); 
    },interval); 

setInterval(reload,delay); 

嗨夥計們,不能隱藏所有塊出現後的所有塊。每個Jquery後的觸發函數

+0

這看起來有點矯枉過正......請描述你所瞄準的最終效果(一個HTML樣本對於解決方案模型來說很好) –

+0

@TrueBlueAussie是的,即時創建html橫幅:)並且想循環函數,函數本身會逐個顯示塊,然後在所有塊都可見之後,我希望它們再次變爲高度0,然後重複函數。 –

+0

好的,這使得更多的意義...很快回 –

回答

1

這裏是不使用定時器,只是從每個元素的動畫隊列返回動畫承諾的例子:

var interval = 1000; 
var reload = function() { 
    var delay = 0; 
    var promise; // "Undefined" equates to an initial resolved promise 
    $('.bl').css({ 
     height: 0 
    }).each(function (i) { 
     // chain promises in parallel using repeated $.when calls 
     promise = $.when(promise, $(this).delay(delay).animate({ 
      height: '150px' 
     }).promise()); 
     delay += interval; 
    }); 
    // When all animation promises complete, start the process pseudo-recursively 
    promise.then(reload); 
} 
reload(); 

的jsfiddle:http://jsfiddle.net/TrueBlueAussie/rtuLzc6t/

唯一偷偷摸摸位是我在平行承諾鏈接使用promise = $.when(promise, newpromise)。循環的最終結果是當所有動畫結束時單個承諾完成。最後的then使它遞歸。

+0

謝謝你,這就是我想要的:) –