首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS / jquery if() css效果

CSS / jquery if() css效果
EN

Stack Overflow用户
提问于 2010-01-05 00:25:12
回答 5查看 18.7K关注 0票数 2

不知道为什么这不起作用。

我有几个带有.rightColumnButton类的DIVs。其中一些的高度为30px:

代码语言:javascript
复制
.rightColumnButton{
height:30px;
width:206px;
margin-top:20px;
}

如果它们的高度是30px,我想将页边距顶部更改为10px:

代码语言:javascript
复制
$(function(){

if($( '.rightColumnButton' ).css("height") == "30"){
    $(this).animate({marginTop: "10px"}, 500);


    }    
} );

对我不起作用。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-05 00:28:41

使用css('height')也会返回单位,通常是'px‘。因此,在本例中,您正在比较'30px' == '30'。使用返回数值并将其与整数进行比较的height()方法。

此外,您没有指定您想要设置动画效果的对象,因为元素在if子句中不会‘clause’。在元素上使用each()方法创建闭包:

代码语言:javascript
复制
$(function(){
    $('.rightColumnButton').each(function() {
        if($(this).height() == 30) {
            $(this).animate({marginTop: "10px"}, 500);
        }    
    });
});

编辑

我想我应该在这里澄清一下,而不是在评论中写。我假设你的观点是动画所有高度为30px的元素。在你最初的帖子中,你有这样的想法:

代码语言:javascript
复制
if($( '.rightColumnButton' ).css("height") == "30"){

这确实选择了所有的“.rightColumnButtons”,但是当你使用css("height")调用时,你只能得到第一个元素的高度。如果您的代码工作正常,那么只有当第一个div的高度为30px时,它才会对所有div进行动画处理。

这就是each()方法派上用场的地方。它循环遍历所选内容中的每个元素,并相互独立地比较高度,并在必要时设置动画。

票数 3
EN

Stack Overflow用户

发布于 2010-01-05 00:30:29

未指定this

代码语言:javascript
复制
$(function(){
    $( '.rightColumnButton' ).each(function(){
        if($(this).css("height") == "30"){
            $(this).animate({marginTop: "10px"}, 500);
        }
    }
    );
});
票数 1
EN

Stack Overflow用户

发布于 2010-01-05 00:30:58

css()方法将返回一个带有单位的字符串,在本例中为'30px';

所以你必须检查

代码语言:javascript
复制
$('.rightColumnButton').css("height") == "30px" 

或者使用height()函数:

代码语言:javascript
复制
$('.rightColumnButton').height() == 30

在设置动画之前,还需要定义this

代码语言:javascript
复制
var col = $('.rightColumnButton');
if (col.height() == 30) {
    col.animate({marginTop: "10px"});
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2000548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档