2012-05-22 54 views
2

我正在研究一些類似於崇高文本代碼摺疊形式的摺疊功能。我希望能夠在20px和div的全高之間進行動畫製作。我嘗試過el.animate({'height':'20px'});,然後el.slideUp();,但如果已經設置了高度,jQuery將不會滑動該元素。jQuery滑到全高? jQuery如何知道元素的全高?

是否有一個簡單的方法來做到這一點與jQuery,以及如何jQuery知道什麼要動畫的高度,當你做.slideDown()

回答

2

您可以通過「display:block」;獲得元素的全高。

所以,如果你有一個隱藏的元素,你可以設置它的位置絕對,它的位置在屏幕之外,並抓住它的尺寸是這樣的:

$('#el').css('position', 'absolute').css('left', '99999px').css('display', 'block'); 
var h = $('#el').height(); 
$('#el').css('position', 'relative').css('display', 'none'); 

至於你的問題,請檢查一旦動畫完成,您就會滑動。 用途:

el.animate({'height':'20px'}, delay, function() { slide here }) 
+0

那麼,如果jQuery的解決方案是,哈克,我就抓住的高度和隱藏它之前將其存儲在元素的數據。我打算這麼做,但我認爲可能有更好的解決方案,但我想不是。 – mowwwalker

+0

在JS中,很多需要DOM操作的東西都有點哈克.. :)把它當成一件很自然的事情吧。在這種情況下,我不知道jQuery的解決方案 - 這是我設法做到的 –