Jquery Blueimp文件上载:文件未从队列中正确删除

Jquery Blueimp文件上载:文件未从队列中正确删除,jquery,jquery-file-upload,blueimp,Jquery,Jquery File Upload,Blueimp,我有以下blueimp文件上载代码: .on('fileuploadadd', function (e, data) { data.context = $('<div/>').appendTo('#FilesListThumb'); $.each(data.files, function (index, file) { var node = $("<div><h6 fileId="+index+">X</h6><

我有以下blueimp文件上载代码:

.on('fileuploadadd', function (e, data) {
   data.context = $('<div/>').appendTo('#FilesListThumb');
   $.each(data.files, function (index, file) {
         var node = $("<div><h6 fileId="+index+">X</h6></div>").addClass("thumbnail-ib");
         node.appendTo(data.context);
         node.find("h6").click(function(){
              data.files.splice($(this).attr("fileId"),1);
              node.remove();
         });
 });
.on('fileuploadadd',函数(e,数据){
data.context=$('').appendTo('#FilesListThumb');
$.each(data.files,函数(索引,文件){
var节点=$(“X”).addClass(“缩略图ib”);
appendTo(data.context);
node.find(“h6”)。单击(函数(){
data.files.splice($(this.attr(“fileId”),1);
node.remove();
});
});

当我单击h6时,它有时会从队列中删除文件,有时不会。为什么?下一个问题是如何从队列中删除所有文件?

我建议您使用递增的全局变量,而不是索引值:

var globalVariable = 0; // To be declare in a global context

.on('fileuploadadd', function (e, data) {
    data.context = $('<div/>').appendTo('#FilesListThumb');
    $.each(data.files, function (index, file) {
        globalVariable = globalVariable + 1;
        var node = $("<div><h6 fileId=" + globalVariable + ">X</h6></div>").addClass("thumbnail-ib");
        file.fileId = globalVariable; // Add the same id to the file
        node.appendTo(data.context);
        node.find("h6").click(function(){
            $.each(data.files, function (index, file) {
                if(file.fileId == $(this).attr("fileId"){
                     data.files.splice(index, 1);
                     return false; // Break the loop
            };
            node.remove();
        });
    });
});
var globalVariable=0;//在全局上下文中声明
.on('fileuploadadd',函数(e,数据){
data.context=$('').appendTo('#FilesListThumb');
$.each(data.files,函数(索引,文件){
全局变量=全局变量+1;
var节点=$(“X”).addClass(“缩略图ib”);
file.fileId=globalVariable;//将相同的id添加到文件中
appendTo(data.context);
node.find(“h6”)。单击(函数(){
$.each(data.files,函数(索引,文件){
if(file.fileId==$(this.attr(“fileId”){
数据文件拼接(索引1);
return false;//中断循环
};
node.remove();
});
});
});

要从队列中删除文件,您可以查看以下问题(我喜欢Tanguyk的答案):并将其应用于
data.files
数组。

我使用类似于`node.find(“h6”).on(“单击”,函数(){for(var i=0;i@Manish它假设您的所有文件都有不同的名称。不,它可能是相同的文件名称。因此,您应该使用其他id而不发生冲突,例如自动递增的id或哈希组合值(名称+时间戳)。我上面的示例使用的是自动递增的值。