1 回答
TA贡献2080条经验 获得超4个赞
在你的代码中this
引用输入,所以你需要找到最近的 .file-upload
父母,你可以使用父母但你需要保持那个结构(我更喜欢最近)
不要在 for-loop 中添加事件,因为如果您选择 3 个文件,您的第一个文件remove element
将有 3 个点击事件,第二个有 2 个,最后一个有一个
$(document).on("change", ".files", function (e) {
var files = e.target.files,
filesLength = files.length;
//this reffer's to <input type="file" class="files" .. so you need to get closest parent .file-upload
let div = $(this).closest(".file-upload");
$(div).find('.pip').remove();
for (var i = 0; i < filesLength; i++) {
var f = files[i]
var fileReader = new FileReader();
fileReader.onload = (function (e) {
var file = e.target;
$("<span class=\"pip\">" +
"<img class=\"imageThumb\" src=\"" + e.target.result + "\">" +
"<br/><span class=\"remove\"><i class='fa fa-times-circle'></i></span>" +
"</span>").insertAfter($(div));
});
fileReader.readAsDataURL(f);
}
$(div).find(".remove").click(function () {
$(this).parent(".pip").remove();
});
});
img {
max-width: 80px;
max-height: 80px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="medi">
<div class="file-upload">
<input type="file" class="files" name="images[]" multiple="">
<img src="/upload.png" style="position: relative;top: 11px;height: 16px;width: 16px;margin-left: 8px;">
<span class="upload-text">Upload</span>
</div>
</div>
添加回答
举报