0

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

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

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

3 回答 3

4

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

$(this).css('margin-top', margintop);
于 2012-04-18T12:04:20.573 回答
2

我不知道你的函数的其余部分,但你要浏览每个图像,你需要使用循环或 each()。就像是:

$('.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,所以您不会看到效果。

于 2012-04-18T12:48:46.243 回答
1

代替

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

$(this).css('margin-top', margintop);
于 2012-04-18T12:05:28.607 回答