jQuery + CSS。如何计算innerHTML的高度和宽度?

时间:2014-09-26 11:29:32

标签: jquery css innerhtml

我有一个使用jQuery的Web项目的典型父子div层次结构。子css没有高度,这允许它根据innerHTML的高度进行扩展和收缩。我以编程方式将HTML标记填充到子项的innerHTML属性中。

我希望设置父级的高度以匹配子级标记后的子级高度。我该怎么做呢?我试过了:

    childDiv.innerHTML = content;
    childDivObject = $(childDiv);

     parentDivObject = $(parentDiv);
     parentDivObject.css({
        "height" : childDivObject.height() + "px"
    });

但是这没用。我错过了什么?

更新0

更多背景信息。此代码用于通过用户点击显示/消失的弹出窗口。这是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()方法,如果这是相关的。

3 个答案:

答案 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()方法切换显示然后高度变为有效。它不漂亮,但它的工作原理。欢呼声。