2016-12-13 8 views
1

私はそれらの上にテキストを持つ画像の3つのブロックを持っています。ここに、3つのうちの1つのように見えます。各要素の高さを取得し、余白として適用します

<div class="lp"> 
    <h2 class="align-vert"> 
     This is my title 
    </h2> 
</div> 

私はjQueryのでタイトルheight();を取得し、aligh-vにそれを適用したいです。次のjQueryコードを試しましたが、動作しません。あなたが現在の要素を参照するためにeach()メソッド内this参照を使用する必要があるため

jQuery.each(jQuery('.js-vert'), function() { 
    jQuery(this).css({ 
     "margin-top": '"' + jQuery('.js-vert').height() + '"' 
    }); 
}); 
+0

'の.jsは何ですか-vert'?あなたのDOMには含まれていないようです。 –

答えて

5

問題があります。現状のコードでは、height()という要素全体が返されます。つまり、最初の要素の高さだけが返されます。文字列連結の構文も少しです。これを試してみてください:

$('.js-vert').each(function() { 
    $(this).css("margin-top", $(this).height()); 
}); 

はまた、これは完全にeach()ループを削除し、必要な値を返しますcss()方法に関数を渡すことで、より簡潔で行うことができることに注意してください。

$('.js-vert').css('margin-top', function() { 
    return $(this).height(); 
}); 
+1

そのメソッドに関数を渡すことができないかどうかはわかりませんでした。驚くばかり! +1 – War10ck

+0

ニース、感謝@Roryは魅力のように動作します:) – Radu033

関連する問題