2012-03-20 19 views
1

で画像の幅と高さを取得します渡されたIMGオブジェクトは、から得られる:私はうるさく働いていた非常に簡単なコードを、持っていると私の人生のために、私はそれが今で失敗している理由を見ることができないjqueryの

jQuery('img') 
.each(function(){ 
    var imgsrc = jQuery(this); 
    imageSize(imgsrc); 
}); 
+0

まあ、正確には問題があるようですか?私には大丈夫です。また、なぜあなたは本格的な単語「jQuery」を使用していますか?互換性の問題?なぜあなたは '$'を使ってみませんか? –

+1

このコードが実行されているときに画像が完全にダウンロードされないと、幅と高さがゼロまたはおそらく他の不正確な値として返されることに言及する価値があります。 – Blazemonger

+0

イメージが完全にロードされたときを正確に検出することは、画像がキャッシュから取得された場合に '.load'イベントが発生しないため、驚くほどトリッキーです。この問題の解決方法については、[この質問](http://stackoverflow.com/q/3554185/901048)を参照してください。 – Blazemonger

答えて

2

画像がまだロードされていない可能性があります。だから、試してみる(テストされていない):

function imageSize(img){ 
    var theImage = new Image(); 
    $(theImage).load(function() { 
    var imgwidth = this.width; 
    var imgheight = this.height; 

    alert(imgwidth+'-'+imgheight); 
    }); 
    theImage.src = img.attr('src'); 
} 
+0

素晴らしいありがとう – xtremetom

2

[OK]を - 私はjsFiddleでそれをテストしたときに私が与えた前の回答が無効だった - 私はあなたがが何をしたいんれ、これを作成しましたか? に「新しい画像()」部分が必要ですか? http://jsfiddle.net/R89Qr/3/ - それがこれを行うように私は、少しあなたのコードを変更...画像に

をいくつかのハードコードさ寸法を与えた:

function imageSize(img){ 
    var theImage = new Image(); // ignoring this part when checking the image width/height 
    theImage.src = img.attr('src'); 
    var imgwidth = $(img).width(); 
    var imgheight = $(img).height(); 

    alert(imgwidth+'-'+imgheight); 
} 

$('img').each(function(){ 
    var imgsrc = jQuery(this); 
    imageSize(imgsrc); 
}); 
+1

'theImage'がjQueryオブジェクトだった場合、それは本当です。 – Blazemonger

+0

はい - v.true、私はいくつかの変更を加え、動作させるためにフィドルを追加しました。 – SpaceBison

+0

あなたは間違った木を樹立しています。非jQuery JavaScript [image object](http://www.w3schools.com/jsref/dom_obj_image.asp)には、元のコードサンプルで取得されたはずのwidthおよびheightプロパティがあります。画像が完全にロードされている場合コードが実行された時刻。 – Blazemonger

1

あなたは、あなたのイメージがロードされますまで、待機する必要があり、その後にアクセスそのサイズ:

function imageSize(img){ 
    var theImage = new Image(); 
    theImage.onload = function(){ 
    var imgwidth = theImage.width; 
    var imgheight = theImage.height; 

    alert(imgwidth+'-'+imgheight); 
    } 
    theImage.src = img.attr('src'); 

} 
関連する問題

 関連する問題