2011-02-01 3 views
0

空のプレースホルダー<img>タグを動的に取り込みたいとします。私は$("img").attr("src", "somephoto.jpg")と呼んで、要素を正しい画像に向けます。しかし、この画像の幅に基づいて何かしたいのですが、$("img").width()$("img").attr("width")の両方が返されます。srcが動的にjQueryで埋められるイメージのディメンションを取得するにはどうすればよいですか?

画像の幅を取得するにはどうすればよいですか?私の問題を解決するより良いプラクティスの画像のsrc?

+0

イメージはフリーフローティングかDOMに挿入していますか? –

+0

私は実際にそれを最初に挿入しますが、イメージを変更し続けます。しかし、私はさまざまな次元の画像を使用し、それらを拡大縮小する必要があります。これが、私が幅をオンザフライで見つける方法を必要とする理由です。 – octopi

+0

たくさんの答え:http://stackoverflow.com/search?q=image+size+jquery –

答えて

0

空のimgタグのsrc属性を使用するのではなく、新しい画像全体を個人的に追加します。

どのようにゼロを返すのですか?これらの2つのメソッドは、整数の幅ではなく10pxの幅の文字列を返します。

+0

それでもImageの 'onload'イベントが発生するまで、ブラウザは高さと幅を読み取ることができません。それらを知っている。また、 'img.height'と' img.width'は実際に数値です。 img.style.heightとimg.style.widthは文字列です。 – isaacs

+0

元のポスターの質問で__jQuery__を使用していると、私は '$(" img ")。attr(" width ")'と '$(" img ")width()'を返す__strings__を参照しています。 – jerluc

0

イメージが最初に読み込まれるまで待つ必要があります。

$("img") 
    .attr("src", "somephoto.jpg") 
    .on("load", function() { 
    alert(this.height()+" "+this.width()) 
    }) 

私のjQueryは少し錆びているかもしれません。ここにはっきりと記載されています。JS

var i = new Image() 
i.src = "somephoto.jpg" 
i.onload = function() { 
    alert(this.height + " " + this.width) 
} 
+0

あなたは '.on'の代わりに' .one'を意味します、そうですか?また、jQueryオブジェクトに 'this'をラップする必要があります:' $(this).height() ' – user113716

+0

jQueryには 'on'メソッドがありません。 .bindまたは.load – sunn0

+0

@ sunn0:jQueryには、最初にハンドラが起動した後にバインドを解除する '.one()'メソッドがあります。これは 'load'ハンドラには意味があります。それが@isaacsの後にあるのかどうかは分かりません。 – user113716

関連する問題