2014-01-22 39 views
1

JSFiddle here身高绝对DIV

var element=$("#outer"); // element is a jQuery object 
var max=0; 
element.children().each(function(index, child) { 
    child=$(child); 
    var childPos=child.position(); 
    var childMax=childPos.top+child.outerHeight(); 
    if(childMax>max) { 
     max=childMax; 
    } 
}); 
element.css({height: max+'px'}); 

任何人都可以请加边框#outer DIV没有给修复的高度? :/

我尝试使用jquery,但它不会工作。请尽可能给我提供任何工作示例。

+0

听起来不是严格的Javascript问题,更多的是CSS的问题。 –

+0

你也应该知道,'.children'只能得到元素的直接子女,而不是大孩子或伟大的孩子等等。所以你的'elemet.children()'只返回一个结果:'ul'是你'div'的直接子节点。我不认为这就是你的意图。试试'.find(“*”)'。 –

回答

1

好像你试图把边框放在box2的内部,这实际上是溢出(意思是它的高度属性不会反映它的内容的高度)。

更改CSS是height:auto

#box1, #box2 { 
    width: 20px; 
    height: auto; 
    background: #f00; 
} 

然后改变你的选择为每个:

element.find('*').each(function(index, child) { 
    //... 
}); 

所以,你得到的元素box2在迭代,因为它不是outer直接子。

Working Fiddle

更新:替代解决方案

如果你想保持你的CSS,你最初写它,你可以找到的DOM元素的scrollHeight并用它来确定的高度在溢出的情况下它的内容。

改变这一行:

var childMax=childPos.top+child.outerHeight(); 

要这样:

var childMax=childPos.top+child[0].scrollHeight; 

Alternative Solution Fiddle

+0

@StunomaticWay从这行删除'childPos.top':'var childMax = childPos.top + child [0] .scrollHeight;'在你的网站上它应该可以正常工作。找出最大高度时,不需要添加最高位置。 –

0

我这里加一个边框:

#outer { 
left: 50px; 
top: 50px; 
width: 200px; 
background: #aaa; 
border:1px solid red; 
} 

它现在有边界。 你想实现什么? 也许你想要它有一个边框,并包含它的所有子元素?