jquery animate: как я могу динамически получить высоту элемента для анимации?

Как я могу динамически получить высоту элемента для animate()?

Это мой код, чтобы показать больше скрытого текста в элементе. Проблема в том, что мне нужно зафиксировать высоту анимации (например, 300 пикселей) до фиксированного числа, а текст постоянно меняется, поэтому я не знаю, как долго это будет.

$('.toggle-slide').click(function() {

      var object = $(this);
      var object_target = $('.text-about');
      var target_height = object_target.height();

     object_target.animate({
        height:'300px'
      }, 1500 );


      return false;
 });

Поэтому я думаю, что фактическая высота элемента должна быть получена динамически, тогда я могу передать этот параметр в animate().

Но как я могу получить эту динамическую высоту?

Или, может быть, у вас есть другие лучшие идеи?

Вот моя тестовая ссылка.


person laukok    schedule 31.08.2011    source источник
comment
Вы получаете высоту элемента в jQuery с помощью [.height](), если только элемент не скрыт во время вызова. Тогда вы должны быть немного подлый об этом. Скрывается ли динамический элемент, когда вы пытаетесь получить его высоту?   -  person Chad    schedule 31.08.2011
comment
да, он скрыт с самого начала, как вы можете видеть здесь - jsfiddle.net/unLBu/2   -  person laukok    schedule 31.08.2011


Ответы (1)


$('.toggle-slide').click(function() {

      var object = $(this);
      var object_target = $('.text-about');
      var target_height = object_target.height('100%').height();

      object_target.height('200px');

      object_target.animate({
        height: target_height + 'px'
      }, 1500 );


      return false;
 });

Я заставил его работать, сначала сделав все видимым, затем взяв высоту, затем вернув 200 пикселей и анимировав :)

может мерцание на более медленных машинах, но это идея

person Peter Short    schedule 31.08.2011