jquery .ready и высота элемента

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

$(function() {
  $('#my-elem').height() // Always gives me zero.
});

Если я добавлю код с задержкой с помощью setTimeout () вокруг проверки высоты (скажем, 0,5 с), тогда высота будет возвращена мне правильно. Я предполагаю, что это потому, что у стилей еще не было возможности быть примененными?

Единственное решение, которое я нашел для этой проблемы, состоит в том, чтобы использовать интервал для опроса высоты элемента, пока он не станет ненулевым, но это кажется мне излишним. Есть ли способ лучше?

 Salman A20 июн. 2012 г., 10:31
Нет, это не поможет; фактически это означает, что сценарий запускается до события DOMReady (document.ready).
 user143212420 июн. 2012 г., 10:01
# my-elem это div, span, img или что
 elclanrs20 июн. 2012 г., 10:04
Элемент скрыт и затем показан? Попробуй с$(window).load() событие, которое происходит немного позже, чем docready.
 Starx20 июн. 2012 г., 10:33
Покажите нам HTML, а также скрипку, если это возможно.
 Ajay Beniwal20 июн. 2012 г., 10:09
Попробуй поставить скрипт внизу страницы

Ответы на вопрос(1)

Решение Вопроса

document.ready событие сигнализирует, что HTML DOM готов для доступа через Javascript, ноthat doesn't mean that the elements have already rendered.

Фактически, это весь шебанг позадиreadyэто средство для вас, чтобы начать манипулировать HTML DOM вашего документаwithout having to wait for the page to finish loading, Можно предположить, что приdocument.ready, ваши элементы еще не отображаются на странице.

Теперь это сопровождается предупреждением: если элементы еще не отрисованы, как браузер / Javascript могут узнать, какова его разрешающая высота?.height() может дать ноль вdocument.ready из-за этого. Вероятно, лучше подождать, покаload вместоready когда дело доходит до вытягивания размеров коробки из макета.

 20 июн. 2012 г., 12:28
Я думаюmost of the time (if not every time) следует читать какon rare occasions
 20 июн. 2012 г., 12:36
Я говорил из опыта, но позвольте мне перефразировать это, чтобы быть более общим.

Ваш ответ на вопрос