jQuery:一个带有多个dropzone的拖放式上传

时间:2011-12-23 13:11:19

标签: javascript jquery upload drag-and-drop treeview

我想通过在文件夹上拖放上传来开发文件夹和文件树。

示例:

enter image description here

对于拖放上传,我资助jQuery File Upload

基本代码是:

$('#fileupload').fileupload({
    dataType: 'json',
    url: 'php/index.php',
    dropZone: $(document),
    done: function (e, data) {
        $.each(data.result, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);
        });
    }
});

在我的项目中,我有多个dropzone(我的文件夹),例如:

<ul>
    <li>Bookmarks</li>
    <li>Search</li>
    <li>Web dev</li>
    ...
</ul>

如何更改上面的代码来处理带有id,class和jQuery选择器的多dropzone?


我试过这样的事情,但显然它不起作用:

<ul>
    <li id="folder1" class="folder">Bookmarks</li>
    <li id="folder2" class="folder">Search</li>
    <li id="folder3" class="folder">Web dev</li>
    ...
</ul>

$('.folder').fileupload({
    dataType: 'json',
    url: 'php/index.php',
    dropZone: $('.folder'),
    done: function (e, data) {
        $.each(data.result, function (index, file) {
            $('<p/>').text($(this).attr(id)).appendTo(document.body);
        });
    }
});

的问题:

  • 上传完成3次。
  • $(this)不存在。

1 个答案:

答案 0 :(得分:12)

我找到了一位同事的解决方案。

实际上并不复杂:

    $('.folder').each(function(){
        var $this = $(this);

        $this.fileupload({
            dataType: 'json',
            url: 'php/index.php',
            dropZone: $this,
            done: function (e, data) {
                $.each(data.result, function (index, file) {
                    $('<p/>').text($this.attr('id')).appendTo(document.body);
                });
            }
        });
    });

编辑:我的不好,这个答案在the documentation