2012-06-12 2 views
1

Я хочу анимировать высоту div от значения переменной до auto с помощью анимации переключения. Я знаю, что я не называю свою переменную должным образом. Просто пытаюсь понять, как это сделать.jQuery, Анимация высоты от значения переменной до авто на div

var scheight = $('.searchcontainer').height(); 
$('.searchcontainer').toggle(
    function() { 
     $(".searchcontainer").animate({ height: scheight + "px" }, 500); 
    }, 
    function() { 
     $(".searchcontainer").animate({ height: auto}, 500); 
    } 
); 
+0

Используйте 'css' вместо' imate' – gdoron

+0

'.animate' требует фиксированного' height' в 'px'. Он не может принимать значение 'auto' и анимация. Вы должны использовать '.css', также это должно быть' {height: 'auto'} '(обратите внимание на цитаты вокруг авто) >> http://jsfiddle.net/skram/yAADY/ << –

+0

Вы имеете в виду что-то вроде этого http : //jsfiddle.net/j08691/xGUR5/? – j08691

ответ

0

Активировать оба способа будет проще, если вы разместите другой контейнер для своего содержимого в элементе «searchcontainer». Такой подход позволит вам определить высоту вашего контента, и имея, что значение пикселя (вместо того, чтобы полагаться на «авто») дает вам цель, которую вы можете анимировать к:

http://jsfiddle.net/XdPry/3/

HTML:

<div style="height:200px;border:1px solid #000000"> 
    <div class="searchcontainer" style="background-color:#aa22aa"> 
     <div>content</div> 
    </div> 
</div>​ 

JQuery:

$('.searchcontainer:first').toggle(
    function() { 
     $(this).animate({ height: parseInt($(this).parent('div').height()) }, 500); 
    }, 
    function() { 
     $(this).animate({ height: parseInt($(this).children('div:first').height()) }, 500); 
    } 
);​ 
Смежные вопросы