2012-01-11 80 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的最后一个价值的原因。你实际上获得了所有不同的值,但只有最后一个值。