Javascript 是否仅将唯一文件添加到容器?
我使用的是jQuery文件上传插件——我将自动上传文件上传设置为false,我的行为是,在添加文件时,我建立一个表,显示文件名和一个删除按钮,允许用户在上传之前删除文件。然后有一个上传所有文件按钮 因此,如果用户添加一个名为foo.txt的文件,将创建一行。但是,如果他们再次添加foo.txt,将创建另一行。我想检查该场景的现有表,并向用户发出警报,而不是创建行 到目前为止,上传的代码是:Javascript 是否仅将唯一文件添加到容器?,javascript,jquery,jquery-file-upload,Javascript,Jquery,Jquery File Upload,我使用的是jQuery文件上传插件——我将自动上传文件上传设置为false,我的行为是,在添加文件时,我建立一个表,显示文件名和一个删除按钮,允许用户在上传之前删除文件。然后有一个上传所有文件按钮 因此,如果用户添加一个名为foo.txt的文件,将创建一行。但是,如果他们再次添加foo.txt,将创建另一行。我想检查该场景的现有表,并向用户发出警报,而不是创建行 到目前为止,上传的代码是: $('#uploadFile').fileupload({ replaceFileInput: f
$('#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> </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文件名在一个跨度中包装每个文件名,以便以后方便地访问,或者将文件名存储在一个对象中。取决于表状态是否保持。