Javascript Dropzone.js如何使用TR或TBODY作为预览模板?
有一个显示文件的表格(一个tr一个文件)有一个dropzonejs创建在表格上,所以我可以在表格上拖放文件。我想添加一个“预览”作为表的TR元素,但我不能这样做。以下是我的预览模板的外观:Javascript Dropzone.js如何使用TR或TBODY作为预览模板?,javascript,jquery,html,dropzone.js,Javascript,Jquery,Html,Dropzone.js,有一个显示文件的表格(一个tr一个文件)有一个dropzonejs创建在表格上,所以我可以在表格上拖放文件。我想添加一个“预览”作为表的TR元素,但我不能这样做。以下是我的预览模板的外观: <tr class="dz-preview"> <td><span class="name" data-dz-name></span></td> <td><span class="size" data-dz-size
<tr class="dz-preview">
<td><span class="name" data-dz-name></span></td>
<td><span class="size" data-dz-size></span></td>
<td colspan="5">
<div class="progress" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
<div class="progress-bar progress-bar-success" style="width:0%;" data-dz-uploadprogress> </div>
</div>
</td>
</tr>
TR或TBODY不是DIV的有效子级,因此它将被创建为TEXT,TEXT没有querySelectorAll属性,并且存在错误
有没有一种解决方案可以使用TR或TBODY作为预览模板?因此,Dropzone.createElement函数中有一个小补丁可以解决这个问题: 替换此项:
div = document.createElement("div");
为此:
if (string.substr(0, 3) == '<tr'){
// Table elements can not be wrapped into a div
div = document.createElement("tbody");
} else {
div = document.createElement("div");
}
if(string.substr(0,3)='只需在代码中重新定义Dropzone.createElement函数
在我的例子中,我使用jQuery:
$(function() {
Dropzone.createElement = function(string) {
var el = $(string);
return el[0];
};
var dropzone = new Dropzone(document.body, options);
});
虽然我推荐@Strokes-answer作为最合适的答案,但我附加了一个完整实现的代码,使用了表格格式,它是@Strokes-answer和的扩展
PS:运行代码段是功能性的,因此您可以在此处尝试运行代码段,查看它是否正常工作。
$('#allselect')。更改(函数(){
var selections=document.getElementsByName('selection');
对于(var i=0;iI可以接受这个答案,因为这就是我解决这个问题的方法……尽管它不是一个通用的解决方案。无论如何,谢谢!@striker的答案是你寻找一个更通用的解决方案的方法。这肯定是一个更通用的解决方案,而不涉及插件文件。@dhd你可以重新定义这个函数,而无需修改点击任何插件文件
$(function() {
Dropzone.createElement = function(string) {
var el = $(string);
return el[0];
};
var dropzone = new Dropzone(document.body, options);
});