Jquery 如何获取父元素显示为“无”的元素的高度?

Jquery 如何获取父元素显示为“无”的元素的高度?,jquery,html,css,Jquery,Html,Css,如果某个元素的父元素具有显示:none,如何获取该元素的高度 这里举一个例子: 谢谢 Lukas暂时show()ing一个元素来检索孩子的身高似乎没问题 HTML: JS: //显示我们想要的元素的隐藏父元素的高度 $(“#目标”).show(0,函数(){ //找到并抓住我们想要的元素的高度 _height=$(this.find(“div”).height(); //隐藏父对象并在其后面显示子对象的高度 }).hide()。在(_高度)之后; dem: 很难(换句话说,你不能)获取

如果某个元素的父元素具有
显示:none
,如何获取该元素的高度

这里举一个例子:

谢谢

Lukas

暂时
show()
ing一个元素来检索孩子的身高似乎没问题

HTML:


JS:

//显示我们想要的元素的隐藏父元素的高度
$(“#目标”).show(0,函数(){
//找到并抓住我们想要的元素的高度
_height=$(this.find(“div”).height();
//隐藏父对象并在其后面显示子对象的高度
}).hide()。在(_高度)之后;

<强> dem:

<代码>很难(换句话说,你不能)获取隐藏元素的高度…因为<代码> DOM在渲染页面< /代码>时不考虑隐藏元素。

隐藏元素有一个未定义的宽度和高度,所以不可能得到它们。

你可以这样做,也可以从中使用黑客攻击


请参阅。

要么显示div,要么无法获取隐藏元素的高度。我会说,使用.show()显示div,获取高度,然后使用.hide()再次隐藏它。

这有点不太清楚,但必须先渲染对象,然后才能对其进行测量

var $target = $("#target");

$target[0].parentNode.runtimeStyle.display = "block";
var height = $target.height();
$target[0].parentNode.runtimeStyle.display = "none";
alert(height);

+1这是一个好把戏……但显示和隐藏div会导致闪烁效果。@Vivek:对我来说似乎不是。这肯定会导致旧电脑上的浏览器闪烁。这是因为它会强制连续两次完全重新布局。我建议在依赖此解决方案之前对其进行彻底测试。
高度
是一个隐式全局变量。应该避免隐式全局变量,而是将其声明为局部变量。
var $target = $("#target");

$target[0].parentNode.runtimeStyle.display = "block";
var height = $target.height();
$target[0].parentNode.runtimeStyle.display = "none";
alert(height);