2011-02-15 42 views
2

使用jQuery.show()時,有沒有一種方法可以在動畫發生之前訪問有關顯示元素有多大的信息?在展示動畫結束前獲取大小信息

*編輯 - 想我給的例子,我打算用這個作爲任何變通沒有做什麼直接我問仍然是非常有用的:

燈箱內

內容展開使用.show(),但在測量新尺寸和調整之前,lightbox尺寸和位置必須等待動畫結束。結果是兩個動畫跟着對方,當我想要的是2個動畫同時運行

回答

1

$( 「一些元件」)的CSS({ 顯示: 「塊」,可見性: 「隱藏」,位置: 「絕對」 });

將導致元素採取自然尺寸,但保持隱藏狀態。然後,您可以使用.height()和.width()來測量元素的尺寸。希望有所幫助。

-1

如果我正確地理解了這個問題,應該這樣做。 。

var height = $("#foo").height(); 
+1

麻煩的是,以前的動畫$( 「#foo」)。height()往往是(總是?)0,所以它不能很好地度量動畫後的高度。 – wheresrhys 2011-02-15 14:39:58

+0

您可以提供代碼片段嗎? – Chin 2011-02-15 14:42:01

0

你可以有以下幾種:

$(document).ready(function() { 
    var beforeHeight = $('#element').height(); 
    $('#element').animate({ 
     height:350 
    },250, function() { 
     var afterHeight = $('#element').height(); 
    }); 

    alert("Before: "+beforeHeight+" \r\n After: " + afterHeight); 
}); 

只是重新閱讀你的問題 - 如果你想2級的動畫,一個接一個:

$('#element').animate({ 
    //animate stuff 
},250,function() { 
    $('#element').animate({ 
     //animate more stuff 
    },250) 
});