0

私はこのようなマークアップを持っています:

<div class="imagegroup">
    <img>
    <img>
    <img>
</div>
<div class="imagegroup">
    <img>
    <img>
    <img>
</div>
<div class="imagegroup">
    <img>
    <img>
    <img>
</div>​

そして、各グループで最も高い画像の高さを個別に取得したいと思います。each関数内にjquery関数がありeachます:

$('.imagegroup').each(function(index) {
    var tallestHeight = 0;
    var slideshowNumber = index; 
    var slides = $(this).children();

    $(slides).each(function(index) {
        thisSlideHeight = $(this).height();
        console.log("In slideshow #" + slideshowNumber + ", slide #" + index + " has height " + thisSlideHeight);
        if (thisSlideHeight > tallestHeight) {
            var tallestHeight = thisSlideHeight;
        }
        return tallestHeight;
    });

    console.log("For slideshow " + slideshowNumber + " the tallest slide is " + tallestHeight);

});

しかし、グローバル変数を設定するだけで、内側の各関数の「1レベル」の結果を「外側の」各関数に渡す方法に戸惑っています。tallestHeight私がこれを書いている間、ゼロのままです。私はこれが初心者であることを理解しています:)すべての助けは非常にありがたいです。

http://jsfiddle.net/m2aJu/

4

1 に答える 1

2

あなたはそれを削除する必要はありませんreturn tallestHeight、そしてそれは動作します。

そして、それぞれ2番目の内側に変更var tallestHeight = thisSlideHeight;tallestHeight = thisSlideHeight;ます。新しい変数を宣言するのではなく、外側の変数を使用する必要があります。

または、次のようにコードを簡略化することもできます。

$('.imagegroup').each(function(index) {
    var max = Math.max.apply(null, $(this).find('img').map(function() {
       return $(this).height();
    }));        
    console.log("For slideshow " + index + " the tallest slide is " + max);
});

そして、これが実際のデモです。

于 2012-09-18T02:07:45.043 に答える