Ваш метод верный, но вам могут понадобиться некоторые хаки, чтобы избежать визуального мерцания, которое это даст вам.
Попробуйте переместить div вне экрана, проверьте высоту и затем верните ее назад. Также, пока мы здесь, избегайте использования нескольких запросов jQuery, если это возможно $('.detail')
, так как это может быть довольно дорогой операцией.
var $detail = $('.detail');
$detail
.css({position : 'absolute', left: '-10000px'})
.data('origHeight', $detail.height())
.css({position : '', left : '', height : '130px', overflow : 'hidden'})
;
В качестве альтернативы, если это не работает для вас, не работайте против этого, работайте с этим. Возможно, стоит подумать о том, как адаптировать его к вашему дизайну, например, начиная с его полного размера, а затем анимируя обратно до 130px. Это позволит вам изящно проверить его нормальный размер, а также даст пользователю знать, что там есть больше информации.