ファイル入力から画像の ajax プレビューを表示しようとしています。FileReader() を使用すると簡単ですが、ループで使用しているため、結果を画像ソース内に配置するときは、$(this) を使用して入力のループ項目をターゲットにする必要があります。それは私には意味がありません。
ループがあります..
<li>
<input type="file" class="image" />
<img src="" class="preview" />
</li>
<li>
<input type="file" class="image" />
<img src="" class="preview" />
</li>
<li>
<input type="file" class="image" />
<img src="" class="preview" />
</li>
ここで、2 番目の入力が選択されたとしましょう。FileReader からの結果をイメージ src に追加する必要があります。2 番目のループ アイテムとそのコンテンツをターゲットにして何かを実行するにはどうすればよいですか?
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
// Here I need to use $(this) to target only the second list item's img.preview
$('.preview').attr('src', e.target.result);
};
reader.readAsDataURL(input.files[0]);
}
}