2012-01-11 76 views
2

我有以下函數來獲取每個div元素的高度與特定的CSS類。每個容器都有一個由div元素組成的側面按鈕。我不能用css設置按鈕div的高度,因爲它取決於容器div的高度,每個容器可以是不同的高度。所以我必須用jQuery來做。我正在嘗試根據容器的高度來設置按鈕的高度,以便它們具有相同的高度。獲取容器高度並將按鈕高度設置爲與此相同。JQuery獲取每個Div元素的高度

你能幫忙嗎?謝謝!

// sidebar button 
function SideBarBtn(){ 
    $('.ContactWrap').each(function(){ 
     var FormHeight = $(this).outerHeight(); 
     var SideBtnHeight = FormHeight -25 + 'px'; 
     $('.SideBtn').css('height', SideBtnHeight); 
     $('.SideBtn').fadeIn('slow').fadeOut('slow').fadeIn('slow'); 
    }); 
} 

HTML:

<div class="ContactWrap"> 
    <a href="#submit" class="SideBtn"> S u b m i t - B a r</a> 
    ..... 
</div> 
+0

*需要HTML。* – 2012-01-11 22:51:18

+0

html是一英里長... – user1002039 2012-01-11 23:07:11

+0

@ usser1002039很明顯,相關的HTML代碼。包含'.ContactWrap'和'.SideBtn'的文檔結構對於這個答案非常重要。 – 2012-01-11 23:10:50

回答

1

問題是由這些線路引起的:

$('.SideBtn').css('height', SideBtnHeight); 
$('.SideBtn').fadeIn('slow').fadeOut('slow').fadeIn('slow'); 

這些選擇選擇所有元素與SideBtn類,並應用新的樣式了。爲了解決這個問題,你必須使用更具體的選擇器。

正確的代碼是:

var $btn = $(this).find('.SideBtn'); 
$btn.css('height', SideBtnHeight); 
$btn.fadeIn('slow').fadeOut('slow').fadeIn('slow'); 
+0

我不知道我明白。我需要根據容器高度設置按鈕高度。這似乎設置了容器的高度。 – user1002039 2012-01-11 22:59:22

+0

此代碼基於您的問題中的代碼。你能顯示你的相關** HTML **代碼嗎? – 2012-01-11 23:00:07

+0

好吧,我改變了這個問題。 – user1002039 2012-01-11 23:03:18

0

你遍歷與類.ContactWrap元素,但應用的高度變化,淡入,淡出,淡入,與類.SideBtn的所有元素。因此,每當.each()循環迭代時,它就會調用.css()和每個.SideBtn元素上的淡入淡出功能。這就是爲什麼高度始終是您獲得SideBtnHeight的最後一個價值的原因。你實際上獲得了所有不同的值,但只有最後一個值。