Я пишу код JavaScript, который изменяет размер некоторого контента. Для этого мне нужно знать размер div в моем контенте. Если у меня есть следующий html:

<div id="wrapper">
   ... other stuff ...
   <div id="inner" style="height:400px">Some text in here</div>
   ... other stuff ...
</div>

И следующий JavaScript:

$('#inner').height('auto');
var height = $("#wrapper").height();

В FireFox и Chrome переменная высоты увеличивается по мере того, как внутренний div расширяется, чтобы вместить весь текст. В IE это остается прежним. Думаю, он не перерисовывает div сразу. Кто-нибудь знает, как получить новую правильную высоту в IE?

Ура

1
Magpie 11 Июн 2010 в 16:09

2 ответа

Лучший ответ

Проблема в том, что элемент не перерисовывается сразу, тогда вам нужно измерить высоту асинхронно - установите тайм-аут 0 миллисекунд, чтобы измерить его и продолжить выполнение.

0
levik 11 Июн 2010 в 12:30

Попробуйте так:

$(function() {
  $('#inner').height('auto');
  var height = $("#wrapper").height();
});

Заключение его в $(function() { }); заставляет его ждать, пока DOM отрендерится, прежде чем запускать скрипт. Вероятно, неплохо поместить все, что требует доступа к DOM, сразу после рендеринга внутри этой функции.

0
Klinky 11 Июн 2010 в 13:04