我在函数中有一个删除函数,如果用户点击“删除”按钮,它会显示一条消息,指出文件已被删除。执行此操作的代码如下:
$("#imagemsg").html(data);
但问题是,假设我有4个表行而且我删除了第3行中的文件,该消息应仅显示在第3行,而是显示在第1行。另一个例子是,假设我有8个表行,并且我删除了第6行中的文件,该消息应仅显示在第6行,而是显示在第1行。
为什么在删除文件后出现的消息总是显示在第一行而不是文件被删除的行中?
以下是完整代码:
var counter = 0;
counter++;
function stopImageUpload(success, imagefilename){
var result = '';
if (success == 1){
result = '<span id="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 id="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;
}
以下是deleteimage.php脚本,其中从以下位置检索删除邮件:
<?php
$image_file_name = $_GET["imagefilename"];
echo "$image_file_name was Deleted";
unlink("ImagesFilesFolder/$image_file_name");
?>
答案 0 :(得分:0)
问题似乎是:
.done(function(data) {
$("#imagemsg" + counter).html(data);
您可以像这样设置counter
var counter = 0;
counter++;
但你似乎再也没有提到这个变量了。在任何情况下,此变量都是全局变量 - 上面的命令将始终使用当前计数器编号来定位ID,因此它不会定位与单击按钮对应的tr
。
因为你使用
$(this).parent().remove();
我认为父母是tr
关注的?在这种情况下,您可以使用类而不是ID“imagemsg”,然后执行
$(this).parent().find(".imagemsg").html(data);
这会将消息定位在按钮的同一行内。