height()没有在元素上返回正确的高度

时间:2014-09-21 20:28:36

标签: jquery height outerheight

我试图通过将框高度调整为溢出的内容高度来修复溢出的浮动内容,但它似乎没有做到这一点。

            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显然要大得多。有任何想法吗?

Problem Area 图像形式的问题区域:http://prntscr.com/4p1obb

1 个答案:

答案 0 :(得分:1)

旧版本中存在一个jQuery outerHeight错误,如果您没有传递参数,它将无法返回高度。同样如评论中所建议,您需要从高度()中删除true。

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() );

<强>更新

试试这个(上面提到的bug仍然适用,所以一定要放入一个参数)。下面的代码给出了868的高度。

var outerHeight = 0;
$('.content-right > *').each(function() {
  outerHeight += $(this).outerHeight(true);
});
console.log(outerHeight);