我有一个容器(thetext1),其设置高度为360px。 “thetext1”包含两个div - 一个在左边,一个向右浮动 - 两个内容都是通过ajax调用传递的。
有时候这些div中的一个或另一个中的内容超过360px,所以我想相应地增加text1的高度。
我的测试代码
newhgt = $('#thetext1').find('div.rhs').css("background", "pink").height();
返回0 - (我的选择器是正确的,因为目标div是完全粉红色的!)。
这是为什么?我知道 - 从本网站以前的帖子的答案 - 解决方案是添加溢出:隐藏thetext1,但我想理解为什么我试图获得rhs和lhs div的高度失败。
答案 0 :(得分:31)
确保代码在$(窗口).load [not $(document).ready]
中$(window).load(function () {
newhgt = $('#thetext1').find('div.rhs').css("background", "pink").height();
});
答案 1 :(得分:9)
我遇到了同样的问题,我注意到了一件事,当你打电话时,div需要显示.height();
但是,即使div是可见的,这个div的父母也需要可见。 所以你必须保证父母div是可见的(显示!=无)
撰写$('#div').parent().show();
会让家长可见,您可能需要其他人parent().show();
答案 2 :(得分:8)
只要您检查元素是否先加载,您仍然可以使用$(document).ready。我选择了
$("_element name/id_").load(function() {
$(this).height();
});
我最初在这里找到了解决方案: http://www.fortwaynewebdevelopment.com/jquery-width-or-height-always-returns-0-fix/
并选择在第一个回复中使用答案。
答案 3 :(得分:0)
newhgt = $('#thetext1').find('div.rhs').css("background", "pink")[0].getBoundingClientRect().height;
答案 4 :(得分:0)
我这样解决了我的问题:
setInterval(function(){
alert($("#element").height());
}, 1000);
对我有用。