使用jQuery获取Dropzone Instance / Object

时间:2015-04-08 14:42:41

标签: javascript jquery dropzone.js

我使用jQuery来处理dropzone。 e.g。

$("#mydropzone").dropzone({ /*options*/ });

我需要获取Dropzone实例,以便我可以调用此方法:

myDropzone.processQueue()

我怎样才能做到这一点? 有可能吗?

换句话说,如何使用

初始化放置区
$("#mydropzone").dropzone({ url: "/file/post" });

但同时获取对象的实例,就好像我使用:

初始化它一样
var myDropzone = new Dropzone("#mydropzone", { url: "/file/post"});

所以我可以致电:

myDropzone.processQueue()

非常感谢。

5 个答案:

答案 0 :(得分:54)

issue #180

中所述

您还可以使用内置的Dropzone.forElement功能。

var myDropzone = Dropzone.forElement("#mydropzone");

答案 1 :(得分:9)

该脚本似乎向给定的dropzone添加了element个对象。 所以你可以这样做:

var $dropZone = $("#mydropzone").dropzone({ /*options*/ });
// ...
$dropZone[0].dropzone.processQueue();

答案 2 :(得分:4)

使用jQuery访问实例的简便方法(如果已经初始化):

var dropzone = $(this).get(0).dropzone;

答案 3 :(得分:1)

如前所述,您可以使用dropzone的forElement,后者依次检查element.dropzone,其中'element'是本机变量(不是jquery obj)。因此,要合并,总结,解释和扩展以前的答案,您可以这样做:

var element = $("#mydropzone")[0]; // this is the way jquery gives you the original dom

或者更好,仅用普通的js:

var element = document.querySelector("#mydropzone");

然后获得像这样的放置区:

element.dropzone

或更简洁(此处为纯js):

var dzone = document.querySelector("#mydropzone").dropzone

仅供参考,当前放置区的forElement来源:

Dropzone.forElement = function (element) {
  if (typeof element === "string") {
    element = document.querySelector(element);
  }
  if ((element != null ? element.dropzone : undefined) == null) {
    throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
  }
  return element.dropzone;
};

答案 4 :(得分:0)

使用dropzone.instances检查元素ID似乎很简单:

function fn_check_has_dropzone_instances(id){
    var found = false;
    Dropzone.instances.forEach(function(item,index){
        if($($(item)[0].element).attr('id').trim()==id.trim()){
            console.log(id);
            found = true;
        }
    });
    return found;
}