1

アップロードが完了すると、ファイルの名前が文字列に保存され、IDがテキスト入力に保存されるときに、以下のjquery関数があります。関数の下部で、ユーザーが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」という名前の入力ボックスを生成することに加えて、すべてのビデオの一意のIDを持つ要素にid属性を追加します。<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 に答える