jQuery:多个拖放区域的拖放上传

7
我希望开发一个文件夹和文件的树形结构,并支持将文件拖放上传到文件夹中。
例如:

enter image description here

对于拖放上传,我发现了jQuery文件上传

基本代码如下:

$('#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);
        });
    }
});

在我的项目中,我有多个拖放区域(我的文件夹),例如:
<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个回答

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

编辑:我的错,这个答案在文档中有提到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接