2012-02-06 8 views
1

これを説明する最良の方法はわかりません。しかし、イメージの幅を見つけていて、200ピクセル未満の場合は200未満のクラスを親divに適用しています。jquery < than and >より.width

$('.content').find('img').each(function() { 
    var $this = $(this), width = $this.width(); 
     if (width < 200) { 
     $(this).parents('.container').addClass('under-200'); 
     } 
}); 

CSS:.container.under-200 {width: 200px}

これは正常に動作しますが、私は大きな画像で幅を適用するの難しさを抱えています。

したがって、600pxイメージの場合、jqueryは親divに600px幅を適用します。または434pxイメージは親divに434px幅を適用します。代わりに.parents().closest()を使用し、また

$(this).parents('.container').css("width", width); 

+1

@ Cadence96直接の親だけが必要な場合はyes、それはparent()です。上向きにしたい場合は、親()(または近く()) –

答えて

1

はこれを試してみてください。

.parents()は、DOMをルート要素HTMLに渡し、THENはセレクタに基づいて結果をフィルタリングします。一方、.closest()は、一致が見つかるとすぐに停止します。

あなたは、単一のラインに至るまで、すべてのコードを沸かすことができます:

$(this).closest('.container').css("width", (width < 200 ? 200 : width)); 

ホープ、この助けました!あなたが書くことができるように

+0

シンプルで分かりやすい!どうもありがとうございました。 '.closest()'は速く '' .parents() 'でなければなりません。再度、感謝します。 – uriah

0

width()は、setter formがあります

$(".content img").each(function() { 
    var $this = $(this), 
     $containers = $this.parents(".container"), 
     width = $this.width(); 
    if (width < 200) { 
     $containers.addClass("under-200"); // Set class. 
    } else { 
     $containers.width(width);   // Set width. 
    } 
}); 
+0

フレデリックにお手伝いいただきありがとうございます。 – uriah

0

たぶん、あなたはint型への '幅' を解析する必要がありますか?幅は確かに少ない200以上である場合はtrue

if (width < 200) 

は作品だけを返すように、私は幅が文字列であるため、それが今では常にtrueを返すことを想像できますか?

+0

['.width()'](http://api.jquery.com/width/)は数値を返します。 –

+0

'.width()'は数値を返します。 (2番目の動き)* .width()メソッドは、要素の幅を数学的計算で使用する必要がある場合にお勧めします。* http://api.jquery.com/width/ – Joseph

+0

単位を返しませんが、それは常に整数、すなわち決して弦や浮動小数点ですか?フロートは問題ではありません。 –

関連する問題