0

画像の高さを確認したい(ページ上にそのような要素が複数あります)。高さが 66px を超える場合は、その高さの半分に等しい負のトップ マージンを適用します。

次のコードは何もしません。if ステートメントの何が問題になっていますか?

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

3 に答える 3

4

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 に答える