Javascript 在onComplete回调中引用新创建的DOM对象的精细上载程序
这件事我已经胡闹了很长时间了。我得到的越深,我需要做的调整就越多。我最大的问题是,一旦创建了li项,就能够正确引用它 例如,上传图像后,将创建一个新的li项目。然后我引用这个li元素进行各种更改。例如添加拇指钉和自定义按钮。出于各种原因,需要此参考 从删除到错误输出等,大部分工作都正常。但是,我找到对应li元素的引用的方式被破坏了 据我所知,完全是这样的Javascript 在onComplete回调中引用新创建的DOM对象的精细上载程序,javascript,jquery,dom,fine-uploader,Javascript,Jquery,Dom,Fine Uploader,这件事我已经胡闹了很长时间了。我得到的越深,我需要做的调整就越多。我最大的问题是,一旦创建了li项,就能够正确引用它 例如,上传图像后,将创建一个新的li项目。然后我引用这个li元素进行各种更改。例如添加拇指钉和自定义按钮。出于各种原因,需要此参考 从删除到错误输出等,大部分工作都正常。但是,我找到对应li元素的引用的方式被破坏了 据我所知,完全是这样的 onComplete(String id, String name, Object responseJSON, XMLHttpRequest
onComplete(String id, String name, Object responseJSON, XMLHttpRequest xhr)
这方面没有太多数据,但从我收集到的信息来看,ID是一个数字,按照列表的顺序表示上传的图像。可能是反映输出列表的内部列表
所以我把这个id和li元素数组的索引id结合起来。这使我能够找到正确的完整li元素并对其进行操作
所以这很好用。问题是当我删除图像时。删除图像,然后删除li元素。但是问题是,onComplete ID与列表中的索引不匹配
由于我的图像保存在数据库中以及其他原因,我正在使用自定义删除功能。我在预先列出清单时也会遇到同样的问题。目前,我计划以完全相同的方式预输出一份包含相关数据的列表副本。我找不到有关预填充fineuplader的任何信息
那么,有没有一种方法可以准确地引用新的完整li元素?一旦在大多数浏览器上保持不变?预填充列表的最佳方法是什么
实际上,在oncomplete处理程序中对新的dom li元素进行简单的引用将是完美的。或者类似的东西。我很惊讶它不存在。也许有,但我找不到任何关于它的信息
谢谢我假设您使用的是默认的FineUploaderUI,而不是FineUploaderBasic/core。在这种情况下,很容易获得Fine Uploader为关联文件创建的DOM元素的句柄。例如,在
onComplete
回调中:
....
onComplete: function(id, name, response, xhrOrXdr) {
var listItemEl = this.getItemByFileId(id);
// do something with this element
}
我提供了一个非jQuery的示例,因为您的示例代码似乎没有使用jQuery,即使您将这个问题标记为jQuery。在使用jQuery插件的情况下,代码如下所示:
$('#myFineUploaderContainer').on('complete', function(event, id, name, response, xhrOrXdr) {
var $listItem = $(this).fineUploader('getItemByFileId', id);
// do something with this jQuery object
});
请注意,在上面的示例中,Fine Uploader 3.6及更高版本将返回一个节点/HtmleElement,而Fine Uploader 3.7及更高版本将返回预期的jQuery对象。我编写了上面的示例,假设您使用的是3.7
有关此API方法和其他API方法、选项以及回调的更多信息,请参阅中的文档 是的,jQuery很抱歉。哇!我希望我几天前问过!!