在文件上传插件方法之间引用 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);
}
}
我需要能够在 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);
}
}