不知道为什么这不起作用。
我有几个带有.rightColumnButton类的DIVs。其中一些的高度为30px:
.rightColumnButton{
height:30px;
width:206px;
margin-top:20px;
}如果它们的高度是30px,我想将页边距顶部更改为10px:
$(function(){
if($( '.rightColumnButton' ).css("height") == "30"){
$(this).animate({marginTop: "10px"}, 500);
}
} );对我不起作用。
发布于 2010-01-05 00:28:41
使用css('height')也会返回单位,通常是'px‘。因此,在本例中,您正在比较'30px' == '30'。使用返回数值并将其与整数进行比较的height()方法。
此外,您没有指定您想要设置动画效果的对象,因为元素在if子句中不会‘clause’。在元素上使用each()方法创建闭包:
$(function(){
$('.rightColumnButton').each(function() {
if($(this).height() == 30) {
$(this).animate({marginTop: "10px"}, 500);
}
});
});编辑
我想我应该在这里澄清一下,而不是在评论中写。我假设你的观点是动画所有高度为30px的元素。在你最初的帖子中,你有这样的想法:
if($( '.rightColumnButton' ).css("height") == "30"){这确实选择了所有的“.rightColumnButtons”,但是当你使用css("height")调用时,你只能得到第一个元素的高度。如果您的代码工作正常,那么只有当第一个div的高度为30px时,它才会对所有div进行动画处理。
这就是each()方法派上用场的地方。它循环遍历所选内容中的每个元素,并相互独立地比较高度,并在必要时设置动画。
发布于 2010-01-05 00:30:29
未指定this
$(function(){
$( '.rightColumnButton' ).each(function(){
if($(this).css("height") == "30"){
$(this).animate({marginTop: "10px"}, 500);
}
}
);
});发布于 2010-01-05 00:30:58
css()方法将返回一个带有单位的字符串,在本例中为'30px';
所以你必须检查
$('.rightColumnButton').css("height") == "30px" 或者使用height()函数:
$('.rightColumnButton').height() == 30在设置动画之前,还需要定义this。
var col = $('.rightColumnButton');
if (col.height() == 30) {
col.animate({marginTop: "10px"});
}https://stackoverflow.com/questions/2000548
复制相似问题