2014-10-12 54 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