jquery - CSS/jquery if() css效果

标签 jquery css jquery-animate

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

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

.rightColumnButton{
height:30px;
width:206px;
margin-top:20px;
}

如果高度为 30px,我想将 margin-top 更改为 10px:

$(function(){

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


    }    
} );

对我不起作用。

最佳答案

使用 css('height') 还会返回单位,通常为“px”。因此,在本例中,您要比较 '30px' == '30'。使用 height() 方法返回一个数值并将其与整数进行比较。

此外,您没有指定要为哪个对象设置动画,因为该元素不会在 if 子句中“携带”。在元素上使用 each() 方法来创建闭包:

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

编辑

我想我应该在这里澄清自己,而不是写在评论中。我假设您的目的是为所有高度为 30px 的元素设置动画。在您原来的帖子中,您有这样的内容:

if($( '.rightColumnButton' ).css("height") == "30"){

这确实会选择所有“.rightColumnButtons”,但是当您使用 css("height") 调用时,您只能获得第一个元素的高度。如果您的代码有效,则仅当第一个 div 的高度为 30 像素时,它才会为所有 div 设置动画。

这就是 each() 方法派上用场的地方。它循环遍历选择中的每个元素,并独立比较彼此的高度,并在必要时进行动画处理。

关于jquery - CSS/jquery if() css效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2000548/

相关文章:

html - 固定页脚在调整浏览器大小时错位

html - 如何检测设计和网站之间的差异?

css - IIS 7 和字体 awesome .woff 404 错误

javascript - jQuery .append() 字符串被 IE7 html 解析器乱码

javascript - 如何使用 jQuery 自定义动画 <ul> 轮播 slider ?

html - 特定 div 中的第二级菜单,左对齐

jQuery 不会动画不透明度,但会在悬停时旋转元素

javascript - 单击后使按钮只读

jquery - Bootstrap 下拉菜单不适用于 SlidesJS 3.0

javascript - Web 应用程序中 Javascript 和 PHP 脚本之间的通信