下面是一个函数,它控制文件在其自己的表行中完成上传后发生的任何事情。每个表行都包含一个文件输入,用户可以在其中上传文件,然后将文件名附加到它自己的表行中。
如果上传成功,则会显示一条成功消息,如果上传不成功,则会显示一条消息,说明存在错误。但是我在该功能中还有另一个功能,用户可以通过单击“删除”按钮来删除文件。我唯一的问题是这行代码:
$(".imagemsg" + counter).html(data);
假设我有 2 个表行,我在第一行删除了一个文件,.imagemsg 中的消息应该只显示在第一行,因为那是删除发生的行,它不应该在第一排和第二排。
另一个例子是,如果我有 4 个表行并且我删除了第三行中的文件,那么该消息应该显示在第三行,因为那是发生删除的地方。
所以我的问题是我需要添加什么, $(".imagemsg" + counter).html(data);
以便消息仅显示在删除文件的行中,而不是.imagemsg
每一行中的所有内容?
以下是完整代码:
function stopImageUpload(success, imagefilename){
var result = '';
var counter = 0;
counter++;
if (success == 1){
result = '<span class="imagemsg'+counter+'">The file was uploaded successfully!</span><br/><br/>';
$('.listImage').eq(window.lastUploadImageIndex).append('<div>' + htmlEncode(imagefilename) + '<button type="button" class="deletefileimage" image_file_name="' + imagefilename + '">Remove</button><br/><hr/></div>');
}
else {
result = '<span class="imageemsg">There was an error during file upload!</span><br/><br/>';
}
$(".deletefileimage").on("click", function(event) {
var image_file_name = $(this).attr('image_file_name');
jQuery.ajax("deleteimage.php?imagefilename=" + image_file_name)
.done(function(data) {
$(".imagemsg" + counter).html(data);
});
$(this).parent().remove();
});
return true;
}
以下是 HTML 代码:
var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" +
"Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +
"</p><p class='listImage' align='left'></p>" +
"<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");