2009-10-09 2 views
2

Я пытаюсь вычислить высоту TR, который установлен для отображения: none, однако метод расширения высоты jquery возвращает 0 каждый раз. Конечно, когда его видимое значение возвращает правильное значение. Из моего понимания и прошлого опыта я не знаю, почему это происходит, потому что, если он не вернет высоту, даже если она скрыта? Во всяком случае, любая помощь будет оценена!JQuery Height of Hidden TR return 0

спасибо!

+1

Может быть, вы хотите видимость: скрытый, чтобы скрыть элемент. Я думаю, что сохраняет высоту в документе. –

ответ

4

Нет, элементы, которые являются display:none, не занимают места в пространстве документа, поэтому не имеют размеров.

Ожидается, что свойства, которые рассчитываются из прямоугольного пространства элемента (например, offsetWidth или offsetHeight), возвратят 0.

Ссылка: CSS1 Formatting model

Редактировать: получение размеров скрытых элементов трудно. В зависимости от вашей ситуации, this answer may be of some help.

+0

Как я мог получить высоту этого элемента? – 2009-10-09 18:51:02

1

Rotatin is right. То, что я делал в прошлом, когда мне действительно нужно было знать, какова высота элемента, заключается в использовании jquery для получения высоты, сохранения ее в объекте данных элемента и затем скрыть элемент после загрузки страницы ,

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

Но, если вам нужна эта техника, она может быть выполнена как таковой:

$('.should_be_hidden').each(function() { 
    $(this).data('height',$(this).height()).hide(); 
}); 

Это бывает полезно, если вам нужно анимировать объект.

Чтобы получить высоту, при необходимости ... вы можете просто сделать:

var element_height = $('#some_element').data('height');