2012-04-19 4 views
2

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

function load_shipping_message (title, message) { 
    var left = (($(window).width()/2) - 300) + 'px'; 
    var height = $(document).height(); 
    var overlay = $('<div id="overlay" style="display:none;height:'+height+'px;"></div>').appendTo($('body')); 
    var atc = $('<div class="atc-container" style="width:600px;"></div>').appendTo($('#overlay')); 
    var mess = $('<div class="atc-msg"><div class="success">'+title+'</div><p>'+message+'</p><p class="clearfix"><a class="button" style="float:right;"><span>Close</span></p></div>'); 
    atc.html(mess); 
    var top = (($(window).height()/2) - (atc.height()/2)) + 'px'; 
    atc.css ({ 
     'top': top, 
     'left': left 
    }); 
    overlay.fadeIn('slow', function() { 
     overlay.click (function() { 
     overlay.fadeOut ('slow', function() { 
      overlay.remove(); 
     });  
     }); 
    }); 
} 

В приведенном выше значении значение atc.height() всегда возвращает 0, даже если оно содержит контент.

Он отлично работает, кроме этого, он просто устанавливает верхнюю часть окна сообщения на половину точки просмотра, так как atc.height() всегда равен нулю. Просто хочу, чтобы его правильно центрировать, высота окна отличается, очевидно, в зависимости от длины содержимого.

Возможно, потому что наложение скрыто?

Спасибо.

-Vince

ответ

1

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

+0

Отлично, спасибо. –

1

Если элемент имеет display:none, он и все его потомки будут иметь высоту (и ширину) от нуля.

Чтобы это исправить, сделать что-то вроде:

set display to block 
get height 
set display back to none 

С JS страницы блоки перекраивания, пользователь никогда не будет видеть элемент показывается в то время как высота измеряется.

Смежные вопросы