jQuery:根据if语句添加css

时间:2012-04-18 12:03:01

标签: javascript jquery html css

我想检查图像的高度(页面上有多个这样的元素)。如果高度大于66px,我想应用一个等于其高度一半的负上边距。

以下代码不执行任何操作。我的if语句出了什么问题?

if($('.topstories a.image img').height() > 66){
    var margintop = -0.5 * ($(this).height() - 66);
    $(this).css('margin-top', 'margintop');
}

3 个答案:

答案 0 :(得分:4)

您已将值设置为margintop的引号,因此它被视为字符串文字(在这种情况下为无效值)。尝试:

$(this).css('margin-top', margintop);

答案 1 :(得分:2)

我不知道你的其余功能,但你要浏览每个图像,你需要使用一个循环或每个()。类似的东西:

$('.topstories a.image img').each(function(){
    if($(this).height() > 66)){
        var margintop = 0.5 * ($(this).height());
        $(this).css('margin-top', '-' + margintop);
    }
});

我认为你在数学运算符中减去66也会导致一个问题 - 如果图像高度是67,你减去66,你得到1. 1 * .5等于0,所以你不会看不到效果。

答案 2 :(得分:1)

替换

$(this).css('margin-top', 'margintop');

$(this).css('margin-top', margintop);