2012-04-24 17 views
0
$(document).ready(function() { 
    $("img.resizeImage").each(function(){ 
     var img = $(this); 
     var width = $(this).width(); // Current image width 
     var height = $(this).height(); // Current image height 
     // alert("give image size ....."+width+", "+height); 
     var pic_real_width, pic_real_height; 
     $("<img/>").attr("src", $(img).attr("src")) 
      .load(function() { 
       pic_real_width = this.width; 
       pic_real_height = this.height; 

      }); 

     if(pic_real_width < width ){ 
      //alert("display original width.sssss 103.."); 
      $(this).removeAttr("width"); 
      $(this).css("width",pic_real_width); 
     } 

     if(pic_real_height < height){ 
      //alert("display original height ss.102.."); 
      $(this).removeAttr("height"); 
      $(this).css("height",pic_real_height); 
     } 
    }); 
}); 

上記のjquery実行フローは、条件が満たされていれば最後にヒットしません。私は望む結果を得ていません。私は2つのif()の上にいくつかの警告を維持すると、実行フローは2つのif条件の中に入ります。 plは私を助けます。 jquery文を行単位で実行するにはどうすればいいですか?JQuery-クラスを持つimg要素ごとにCSSを追加します。

答えて

3

画像のロードは非同期です。つまり、.loadコールバックは直ちに呼び出されません。

したがって、pic_real_widthpic_real_heightは、使用しようとする時点で不明です。

コールバック関数に移動する必要がありますか?

+0

次に、どのようにして各img要素の元の高さと幅を無負荷で得ることができますか?その他のソリューション。私が望むのは、画像が与えられた高さよりも小さい場合です。高さと幅私はそれを伸ばして元の高さと幅の画像を表示したくありません。 – MadhuB

+0

画像のサイズを確認し、画像が小さい場合は高さ/幅を削除する代わりに、max-heightとmax-widthのCSSプロパティを試してみてください。 img {max-width:100px;}は画像が伸びることはなく、画像のサイズが100pxを超えないようにします。 –

+0

ありがとうございます。 max-widthとmax-heightを使うことができます。 – MadhuB

関連する問題