0

我在一个函数中有一个删除函数,如果用户单击“删除”按钮,它会显示一条消息,说明文件已被删除。执行此操作的代码如下:

$("#imagemsg").html(data);

但问题是,假设我有 4 个表格行,我在第 3 行删除了一个文件,消息应该只显示在第 3 行,而是显示在第 1 行。另一个例子是,假设我有 8 个表行,我在第 6 行删除了一个文件,消息应该只显示在第 6 行,而是显示在第一行。

为什么删除文件后假定出现的消息总是显示在第一行而不是文件已删除的行中?

以下是完整代码:

 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");


?>
4

1 回答 1

0

问题似乎是这样的:

.done(function(data) {
    $("#imagemsg" + counter).html(data);

counter这样设置

var counter = 0;
counter++;

但是您似乎再也不会引用该变量。在任何情况下,这个变量都是全局的——上面的命令将始终以当前计数器编号为目标,因此它不会tr以与单击的按钮相对应的为目标。

既然你用

$(this).parent().remove();

我假设父母是tr有关的?在这种情况下,您可以使用类而不是 ID 'imagemsg',然后执行

$(this).parent().find(".imagemsg").html(data);

这将针对按钮同一行内的消息。

于 2012-05-03T16:40:36.370 回答