jQuery height()在可见div上返回0 - 为什么?

Tom*_*ine 40 css jquery

我有一个容器(thetext1),设置高度为360px."thetext1"包含两个div--一个在左边,一个向右浮动 - 两个内容都是通过ajax调用传递的.

有时候这些div中的一个或另一个中的内容超过360px,因此我想相应地增加text1的高度.

我的测试代码

newhgt = $('#thetext1').find('div.rhs').css("background", "pink").height();
Run Code Online (Sandbox Code Playgroud)

返回0 - (我的选择器是正确的,因为目标div是完全粉红色的!).

为什么是这样?我知道 - 从本网站以前帖子的答案 - 解决方案是添加溢出:隐藏thetext1,但我想理解为什么我试图获得rhs和lhs div的高度失败.

Gaz*_*zer 32

确保代码在$(window).load [not $(document).ready]内

$(window).load(function () {
    newhgt = $('#thetext1').find('div.rhs').css("background", "pink").height();
});
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 9

我有同样的问题,我注意到一件事,当你调用.height()时,div需要是可见的.

但是,即使div是可见的,这个div的父母也需要可见. 所以你必须保证父母div是可见的(显示!=无)

写一个$('#div').parent().show();会让父母看得见,你可能需要一个人parent().show();


aca*_*ito 8

只要您检查元素是否先加载,您仍然可以使用$(document).ready.我选择了

 $("_element name/id_").load(function() {
      $(this).height();
 });
Run Code Online (Sandbox Code Playgroud)

我最初在这里找到了解决方案:http: //www.fortwaynewebdevelopment.com/jquery-width-or-height-always-returns-0-fix/

并选择在第一个响应中使用答案.