10

resizePreview()画像が大きすぎる場合、jQuery ダイアログ ボックスで画像のサイズを変更する関数があります。この画像はユーザーが変更できます。私のコードは次のようになります。

$('#imagePreview').attr('src', newImageSrc);
resizePreview();

resizePreview()と を使用$('#imagePreview').width().height()て寸法を取得し、それに応じてサイズを変更します。問題は、新しい画像がresizePreview()呼び出されるまでに読み込まれないため、新しく読み込まれた画像のサイズではなく、元のサイズに従って画像のサイズが変更されることです。

コードの 2 行の間に呼び出しを入れるalert()と、機能します (アラートにより、ブラウザーは新しい画像を読み込むのに十分な時間が与えられるため)。どうやら私はイベントを使用する必要がありますか?画像の src が変更されたとき (onChange イベントのようなものですが、その属性の場合)、または新しい画像の読み込みが完了したときのために、既存のイベントはありますか、またはそれを作成する方法はありますか? 御時間ありがとうございます。

4

2 に答える 2

18

loadイベントは画像に対して機能します。

$('img.userIcon').on('load', function () {
    $(this).toggleClass( 'bigImg', $(this).height() > 100 );
});
于 2009-08-18T15:53:01.717 に答える
5

画像オブジェクトを使用すると、onload イベント リスナーをアタッチできます。

var img = new Image;
img.onload = function () {
    alert("Loaded");
};
img.src = "dummy-picture.png";
于 2009-08-18T15:51:30.410 に答える