我有一个使用jQuery的Web项目的典型父子div层次结构。子css没有高度,这允许它根据innerHTML的高度进行扩展和收缩。我以编程方式将HTML标记填充到子项的innerHTML属性中。
我希望设置父级的高度以匹配子级标记后的子级高度。我该怎么做呢?我试过了:
childDiv.innerHTML = content;
childDivObject = $(childDiv);
parentDivObject = $(parentDiv);
parentDivObject.css({
"height" : childDivObject.height() + "px"
});
但是这没用。我错过了什么?
更多背景信息。此代码用于通过用户点击显示/消失的弹出窗口。这是css。这里没有太多内容:
// parent
.parent {
position: absolute;
top: 0;
left: 0;
width: 350px;
display: none;
}
// child
.child {
position: absolute;
top: 5px;
left: 5px;
right: 25px;
}
父母有显示:无的事实可能是问题的一部分吗?我正在使用jQuery show()/ hide()方法,如果这是相关的。
答案 0 :(得分:0)
改变这个:
"height" : childDivObject.height() + "px"
到此:
"height" : childDiv.height() + "px"
看起来你正试图获得内容的高度,而不是div本身。
答案 1 :(得分:0)
通常你会使用一个回调,但是html()没有回调,但还有别的东西,叫做promise。
jquery html() callback function http://digitizor.com/2013/08/03/jquery-html-callback-function-using-promise/
$('#divId').html(someText).promise().done(function(){
//your callback logic / code here
});
答案 2 :(得分:0)
知道了。因为jQuery切换css显示属性来隐藏/显示弹出窗口。
答案是这样做:
parentDivObject.css({
"left": left + "px",
"top" : top + "px"
}).show();
parentDivObject.css({
"height": childDivObject.height() + "px"
});
我在之后设置高度 jQuery show()方法切换显示然后高度变为有效。它不漂亮,但它的工作原理。欢呼声。