Javascript: невозможно получить высоту вновь созданного элемента - PullRequest
3 голосов
/ 22 ноября 2011

После обновления DOM новым элементом (например, body.append (html)) я не могу сразу получить высоту нового элемента (например, body.height ()).Частичным исправлением является установка временного интервала и получение высоты в конце временного интервала (setTimeout («alert (body.height)», 500)).

Есть идеи получше?Как обратный вызов после полного обновления DOM?Благодарю.

Редактировать: это происходит только тогда, когда в фоновом режиме происходит много событий (т. Е. При первой загрузке страницы).Казалось бы, обновление страницы происходит практически мгновенно, если больше ничего не обрабатывается.Мне нужен обратный вызов или индикатор того, когда DOM реформируется!

Редактировать: проблема в том, что браузер «отвлекается» на другие процессы, что делает браузер неспособным обновиться сразу после добавленияэлемента.Как мне это исправить?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

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

0 голосов
/ 22 ноября 2011

С jQuery работает отлично у меня.

В демонстрационной версии jsfiddle я поместил следующий код:

$(function(){
    var jTest = $('#test');

    console.log('The height:',jTest.innerHeight(),jTest.height()); //Show me 'The height: 20 20'

    jTest.append('<div><br/>How are you?</div>');
    console.log('The height:',jTest.innerHeight(),jTest.height()); //Show me 'The height: 60 60'

});

Если вы не имеете в виду решение только для javascript или демонстрационную версию jsFiddle, чтобы показать свою ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...