使用jquery fileupload单独取消上载

使用jquery fileupload单独取消上载,jquery,file-upload,Jquery,File Upload,如何中止特定文件的上载!我将jqXHR附加到上下文的数据属性,然后调用aboutupload函数来搜索数据属性,然后尝试中止它!但它不起作用 function abortUpload (e) { e.preventDefault(); var template = $(e.currentTarget).closest('.template-upload'), data = template.data('data') || {}; console.log(

如何中止特定文件的上载!我将jqXHR附加到上下文的数据属性,然后调用aboutupload函数来搜索数据属性,然后尝试中止它!但它不起作用

function abortUpload (e) {    
    e.preventDefault();
    var template = $(e.currentTarget).closest('.template-upload'),
    data = template.data('data') || {}; 
    console.log(data); // returns [Object object]
    data.jqXHR.abort(); // Cannot call method 'abort' of undefined 
}
// Method of fileupload
 add: function(e, data) {
      data.context = $(tmpl("template-upload", file)).attr('data-data', { jqXHR: data.submit() } );
      $('#fileupload').append(data.context);
      data.context.find('.cancel').click( abortUpload );
      return data.submit(); 
  }
有什么想法吗,伙计们?
Miguel。

您试图将jqXHR对象存储为HTML数据属性值,这是不可能的。
您只能将对象存储在可以序列化为JSON的HTML数据属性中

您可以使用jQuery的.data()方法来存储该值,该方法允许存储任意对象

但是,由于您的所有代码都在同一个方法中,您不需要执行任何操作,因为您可以简单地使用局部变量访问jqXHR对象并取消上载。
您也不需要设置data.context,因为它只用于设置jQuery.ajax请求的上下文

因此,下面的代码片段应该可以帮助您开始工作:

var jqXHR = data.submit(),
    node = $(tmpl("template-upload", file)).appendTo('#fileupload');
node.find('.cancel').click(function (e) {
    e.preventDefault();
    jqXHR.abort();
});

非常感谢S,现在已经很清楚了,唯一的问题是我是否应该将创建的新节点元素附加到data.context,以便我可以在进度方法中使用它来为添加的每个新文件构建新的progressbar。我真的很感激你的回答。非常感谢。Ey@Sebastian Tschan我认为我应该使用data.context,否则进度方法将无法正常工作,如果我使用data.submit in add方法,进度方法将正常工作,但中止不会!您知道为什么进度条在下面的代码中不能正常工作吗?谢谢你的建议。最后,我想我是通过创建一个启动触发器并在单击时提交数据得到的!谢谢你,塞巴斯蒂安!