Javascript Dropzone.js如何使用TR或TBODY作为预览模板?

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一个文件)有一个dropzonejs创建在表格上,所以我可以在表格上拖放文件。我想添加一个“预览”作为表的TR元素,但我不能这样做。以下是我的预览模板的外观:

<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);
});