Высота () не возвращает правильную высоту элемента

Я пытаюсь исправить переполнение плавающего содержимого, регулируя высоту блока по высоте переполненного содержимого, но, похоже, это не помогает.

            if ( $('.content-right').outerHeight() > $('.content-right').parent().parent().height() ) {
                $('.content-right').parent().parent().height($('.content-right').outerHeight(true));
            }
            console.log('Box Height: ' + $('.content-right').parent().parent().height());
            console.log('Content Height: ' + $('.content-right').height() );

Это будет выводить

Box Height: 599
Content Height: 594 

Что неверно, так как div в приведенном ниже примере явно намного больше. Есть идеи?

Проблемная зонаПроблемная область в виде изображения: http://prntscr.com/4p1obb

1 ответ

Решение

В старых версиях есть ошибка jQuery outerHeight, из-за которой высота не будет возвращаться, если вы не передадите параметр. Также, как предлагается в комментариях, вам нужно удалить истинную высоту ().

if ( $('.content-right').outerHeight(true) > $('.content-right').parent().parent().height() ) {
  $('.content-right').parent().parent().height($('.content-right').outerHeight(true));
}
console.log('Box Height: ' + $('.content-right').parent().parent().height());
console.log('Content Height: ' + $('.content-right').height() );

ОБНОВИТЬ:

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

var outerHeight = 0;
$('.content-right > *').each(function() {
  outerHeight += $(this).outerHeight(true);
});
console.log(outerHeight);
Другие вопросы по тегам