0

各ページで 10 回繰り返される一連の記事があります。構造は次のようになります。

<article class="postWrap">
     <h2>Title</h2>
     <p>Here is text</p>
</article>

p タグから記事の先頭までの距離を見つける必要があります。そのため、タイトルの長さによって、記事の先頭から p タグまでの距離が異なる場合があります。最善の方法はおそらく を使用offset()することですが、正しく機能させるのに問題があります。

ありがとう

アップデート:

これが私が書いた作業コードですが、もっと良い方法があると思います:

$(".postWrap").each(function(){
        var postWrap = $(this).offset().top;
        var firstP = $(this).find("p:first-of-type").offset().top;
        var diff = firstP - postWrap;
        var meta = $(this).find(".meta").css({'marginTop' : diff})

});
4

1 に答える 1

0

<h2>質問から、最初の要素の前に常に正確に 1 つの要素があると仮定すると、ショートカットとしてオフセットを計算する代わりに、要素<p>の高さ ( outerHeight) を使用できます。<h2>

$(".postWrap").each(function(){
    var diff = $(this).find('h2:first').outerHeight();
    var meta = $(this).find(".meta").css('margin-top', diff);
});

あなたの例からは何.metaがわかりませんでしたが、それを試して、期待どおりに機能するかどうかを教えてください。それがより適切であれば、それを使用することもできますinnerHeight

編集:または、変数を宣言せずに「ワンライナー」として:

$(".postWrap").each(function(){
    $(this).find(".meta").css(
        'margin-top', 
        $(this).find('h2:first').outerHeight()
    );
});
于 2013-02-15T18:53:09.453 に答える