Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在onComplete回调中引用新创建的DOM对象的精细上载程序_Javascript_Jquery_Dom_Fine Uploader - Fatal编程技术网

Javascript 在onComplete回调中引用新创建的DOM对象的精细上载程序

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

这件事我已经胡闹了很长时间了。我得到的越深,我需要做的调整就越多。我最大的问题是,一旦创建了li项,就能够正确引用它

例如,上传图像后,将创建一个新的li项目。然后我引用这个li元素进行各种更改。例如添加拇指钉和自定义按钮。出于各种原因,需要此参考

从删除到错误输出等,大部分工作都正常。但是,我找到对应li元素的引用的方式被破坏了

据我所知,完全是这样的

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很抱歉。哇!我希望我几天前问过!!