2014-03-02 36 views
2

我一次爲多個元素設置動畫,某些元素的最終屬性取決於其他元素的屬性。例如,我喜歡$('#a').animate({height:$('#b').height()}),但$('#b').height()在動畫過程中發生了變化。有沒有辦法讓動畫在最終的$('#b').height()上完成?在JQuery中爲變量設置動畫效果

+0

不,不是真的。一旦將值傳遞給動畫,將給出速度和開始/結束值。每次'$('#b')。height()'用'$('#a')改變時,你都可以嘗試重新運行動畫stop()。animate({height:$('#b')。height ()})' – adeneo

+0

你如何計算'#b'的新高度?這將有所幫助。 –

+0

如何定義$(「#b」)。height()'? http://jsbin.com上的示例將有助於理解您想要的內容。 –

回答

1

我假設你想動畫的#a高度符合的#b最終高度,即高度元素具有動畫後。

您可以通過更新step函數中fx對象的end值來實現此目的。例如:

var $a = $('#a').animate({height: 50}, 2000); 

$('#b').animate({height: $a.height()}, { 
    duration: 2000, 
    step: function(now, fx) { 
     if (fx.prop === 'height') { 
      fx.end = $a.height(); 
     } 
    } 
}); 

DEMO(注:我得到的元素名稱的另一種方式圓)

當然,這僅當第二個動畫是至少只要它取決於動畫作品。

更多的信息在documentation

相關問題