1

当上传完成时,我在下面有一个 jquery 函数,它将文件名存储在字符串中,并将其 id 存储在文本输入中。现在在函数的底部,如果用户单击deletevideofile按钮,则假设删除文件名和属于该删除按钮的文本输入。但问题是,即使它只删除了正确的文件名,它也会删除所有文本输入,而不仅仅是删除正确的文本输入。

我的问题是如何仅在单击删除按钮时才删除正确的文本输入?

下面是代码:

function stopVideoUpload(success, videoID, videofilename){

      var result = '';
      videocounter++;

      if (success == 1){
         result = '<span class="videomsg'+videocounter+'">The file was uploaded successfully</span>';
          $('.listVideo').eq(window.lastUploadVideoIndex).append('<input type="text" name="vidid" value="' + videoID + '" />');
          $('.listVideo').eq(window.lastUploadVideoIndex).append('<div>' + htmlEncode(videofilename) + '<button type="button" class="deletefilevideo" video_file_name="' + videofilename + '">Remove</button><br/><hr/></div>');      }

  var _videocounter = videocounter;

$('.listVideo').eq(window.lastUploadVideoIndex).find(".deletefilevideo").on("click", function(event) {
    var video_file_name = $(this).attr('video_file_name');

    jQuery.ajax("deletevideo.php?videofilename=" + video_file_name)
        .done(function(data) {

        $(".videomsg" + _videocounter).html(data);
    });

       $(this).parent().siblings('input[name="vidid"]').andSelf().remove();
});


      return true;   
}
4

1 回答 1

4

除了生成名称为“vidid”的输入框外,还为每个视频添加一个具有唯一 IDid的元素的属性。<input>

然后在您的行中更改.siblings()函数中的选择器.remove()以匹配正在生成id的选择器。<input>

这是一些示例 JavaScript。修改它以满足您的需求:

function stopVideoUpload(success, videoID, videofilename) {

    var result = '', _videocounter;
    videocounter++;

    if (success == 1) {
        result = '<span class="videomsg'+videocounter+'">The file was uploaded successfully</span>';
        $('.listVideo').eq(window.lastUploadVideoIndex).append('<input type="text" name="vidid" id="'+videoID+'" value="' + videoID + '" />');
        $('.listVideo').eq(window.lastUploadVideoIndex).append('<div>' + htmlEncode(videofilename) + '<button type="button" class="deletefilevideo" data-videoID="'+videoID+'"  data-video_file_name="' + videofilename + '">Remove</button><br/><hr/></div>');
    }

    _videocounter = videocounter;

    $('.listVideo').eq(window.lastUploadVideoIndex).find(".deletefilevideo").on("click", function(event) {
        jQuery.ajax("deletevideo.php?videofilename=" + $(this).attr('data-video_file_name')).done(function(data) {
            $(".videomsg" + _videocounter).html(data);
        });

        $(this).parent().siblings('#'+ $(this).attr('data-videoID')).andSelf().remove();
    });


    return true;   
}
于 2013-01-21T19:13:43.567 回答