我有以下函数来获取具有特定css类的每个div元素的高度。每个容器都有一个由div元素组成的侧按钮。我不能用css设置按钮div的高度,因为它取决于容器div的高度,每个容器可以是不同的高度。所以我必须用jquery来做。我试图根据容器的高度设置按钮的高度,使它们的高度相等。获取容器高度并将按钮高度设置为相等。
你能帮忙吗?谢谢!// 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 :(得分: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');
答案 1 :(得分:0)
您使用类.ContactWrap
循环遍历元素,但将高度更改和fadeIn,fadeOut,fadeIn应用于具有类.SideBtn
的所有元素。因此,每次.each()
循环迭代时,它都会调用.css()
和每个.SideBtn
元素上的淡入淡出函数。这就是为什么高度总是最终成为SideBtnHeight
的最后一个值。你实际上得到了所有不同的值,但只有最后一个值。