在文件上传插件方法之间引用 jQuery 元素

Referencing jQuery element between fileupload plugin methods

我需要能够在 jQuery 文件上传插件的添加方法和完成方法中引用创建的 jQuery 元素。在add方法中创建,但需要在done方法中替换

目前在多次上传期间,theFilemanagerRow 每次都会被下一个文件的下一次迭代覆盖

问题是:当上传多个文件时,如何从"done"函数中的"add"函数访问唯一的theFilemanagerRow,以便上传多个文件。

单个文件可以工作,但是似乎对于多个文件选择,添加函数对于多个文件中的每一个都是 运行,因此它会覆盖 theFilemanagerRow 并且 done 函数只接收由 [设置的 theFilemanagerRow =22=] 功能在 "done" 完成时 - 希望有意义!!

frameContainer.find('INPUT[type=file]').each(function() {
  var file_field = $( this );
  var theFilemanagerRow = false;

  file_field.fileupload({
    dataType:     'json',
    formData:     formData,
    add:          function(e, data) {
                    //need reference to element here
                    theFilemanagerRow = $('<tr>', {
                      id: Math.random().toString(36).substr(2, 10)
                    });
    },
    done:         function(e, data) {
                   if (theFilemanagerRow.length == 1) {
                     theFilemanagerRow.replaceWith(anotherElement);
                   }
    }
  });

});

为了清晰起见,我在这里简化了代码,以便在文档中使用元素,在别处创建另一个元素,等等。

你可以使用 data.context

  add: function(e, data) {
    // need reference to element here
    var theFilemanagerRow = $("<tr>", {
      id: /* set id */
    });

    data.context = theFilemanagerRow;
  },
  done: function(e, data) {
    // get `.data()` of current element
    var tr = data.context;
    if (tr.length == 1) {
      tr.replaceWith(anotherElement);
    }
  }