2014-10-12 60 views
1

我有这样的结构:每个DIV得到家长的高度 - jQuery的方法

<div class="container" style="height:(variable height)"> 
    <div class="box"></div> 
    <div class="box"></div> 
    <div class="box"></div> 
</div> 
<div class="container" style="height:(variable height)"> 
    <div class="box"></div> 
    <div class="box"></div> 
    <div class="box"></div> 
</div> 
<div class="container" style="height:(variable height)"> 
    <div class="box"></div> 
    <div class="box"></div> 
    <div class="box"></div> 
</div> 

所以我需要每个.box获得从其他具有不同的高度父.container的高度和其变化。

我只需要jQuery方法,没有CSS原因我不想使用absolute位置,table-cell或其他任何做。

谢谢!

+1

CSS高度并不需要特殊的地位 – charlietfl 2014-10-12 12:25:22

回答

5

您可以使用.height

$('.box').height(function(){ 
    return $(this).parent().height(); 
}); 
+0

完美,谢谢! – codek 2014-10-12 12:25:22

+0

@codek不要忘记,以纪念本作的答案,如果它帮助你:) – 2014-10-12 12:26:22

1

的函数重载如果你真的必须使用jQuery:

$('.container').each(function(){ 
    $(this).children().height($(this).height); 
}); 

JS Fiddle demo

值得一提的,不过,如果height设置在.container元素,那么你可以简单地分配:

.box { 
    height: 100%; 
} 

JS Fiddle demo

无特殊position,或者display,属性是必需的。

顺便提及,对于一个普通的JavaScript sollution:

[].forEach.call(document.querySelectorAll('.container'), function (c) { 
    [].forEach.call(c.children, function (b) { 
     b.style.height = c.style.height; 
    }); 
}); 

JS Fiddle demo

参考文献:

+0

呀,问题是,'box'是浮动的元素。这就是为什么它没有得到这样的高度 – codek 2014-10-12 12:39:40

+0

我认为我们可能会谈论不同的问题,但只要父级上有一个定义的高度,CSS高度:100%绝对可行(即使对于浮动元素),请参阅[第二个示范](http://jsfiddle.net/davidThomas/kgfLcasv/2/)。 – 2014-10-12 12:42:46

0
$(function(){ 
    $('.container').each(function(i,e){ 
    $(this).find('.box').css('height',$(this).height()) 
    }); 
}); 
+0

你能解释一下你自己的答案吗? – Zulu 2014-10-12 12:45:01

+0

它会遍历所有的父母,然后找到指定的类和设置其父母的高度 – 2014-10-12 13:11:52