Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否仅将唯一文件添加到容器?_Javascript_Jquery_Jquery File Upload - Fatal编程技术网

Javascript 是否仅将唯一文件添加到容器?

Javascript 是否仅将唯一文件添加到容器?,javascript,jquery,jquery-file-upload,Javascript,Jquery,Jquery File Upload,我使用的是jQuery文件上传插件——我将自动上传文件上传设置为false,我的行为是,在添加文件时,我建立一个表,显示文件名和一个删除按钮,允许用户在上传之前删除文件。然后有一个上传所有文件按钮 因此,如果用户添加一个名为foo.txt的文件,将创建一行。但是,如果他们再次添加foo.txt,将创建另一行。我想检查该场景的现有表,并向用户发出警报,而不是创建行 到目前为止,上传的代码是: $('#uploadFile').fileupload({ replaceFileInput: f

我使用的是jQuery文件上传插件——我将自动上传文件上传设置为false,我的行为是,在添加文件时,我建立一个表,显示文件名和一个删除按钮,允许用户在上传之前删除文件。然后有一个上传所有文件按钮

因此,如果用户添加一个名为foo.txt的文件,将创建一行。但是,如果他们再次添加foo.txt,将创建另一行。我想检查该场景的现有表,并向用户发出警报,而不是创建行

到目前为止,上传的代码是:

$('#uploadFile').fileupload({
    replaceFileInput: false,
    singleFileUploads: true,
    add: function(event, data) {
        $.each(data.files, function (index, file) {
          var rows = $('#files > tr'); // always getting length 0??

          data.url = myUrl;
          data.type = 'POST';
          data.context = $('<tr>'
            + '<td><strong>Selected File : </strong>' + file.name + '</td>'
            + '<td>&nbsp;</td>'
            + '<td><button type="button" class="removeBtn btn btn-default">'
            + '<span class="glyphicon glyphicon-remove-circle"></span>'
            + 'Remove File</button></td>'
            + '</tr>')
          .appendTo('#files')
          .data('data', data);
    });
});
请注意,对于添加的每个文件,add函数都会被调用一次,这正是我想要的。但是,当我尝试获取表中的行时,我始终得到0的长度-即使我向表中添加一个文件,然后再添加另一个文件-第二次使用add方法时,rows length仍然是0,而我希望它是1


如果我能够在追加之前获取所有行,那么我想我必须在每行上执行$。检查当前文件名与行中的文件名是否一致-如果它等于其中任何一行,则跳过并不运行追加代码,而是显示一个警报?

我认为问题在于“files>tr”选择器。它会选择作为“文件”元素的直接子元素的所有元素,但它们不是直接子元素,因为浏览器会为您插入一个元素。您可以尝试“files>tbody>tr”或只是“files tr”

这里有一个例子来说明这一点


您可以自己添加,然后安全地使用'files>tbody>tr'。当然,您必须将调用更改为.AppEnter,这样,新的文件将被附加到.< /P>中,您也可以考虑用一个CaseNeX文件名在一个跨度中包装每个文件名,以便以后方便地访问,或者将文件名存储在一个对象中。取决于表状态是否保持。