使用jQuery获取Dropzone Instance/Object

pre*_*ton 20 javascript jquery dropzone.js

我使用jQuery来处理dropzone.例如

$("#mydropzone").dropzone({ /*options*/ });
Run Code Online (Sandbox Code Playgroud)

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

myDropzone.processQueue()
Run Code Online (Sandbox Code Playgroud)

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

换句话说,我如何初始化drop zone使用

$("#mydropzone").dropzone({ url: "/file/post" });
Run Code Online (Sandbox Code Playgroud)

但同时获取对象的实例,就好像我使用以下内容初始化它:

var myDropzone = new Dropzone("#mydropzone", { url: "/file/post"});
Run Code Online (Sandbox Code Playgroud)

所以我可以打电话:

myDropzone.processQueue()
Run Code Online (Sandbox Code Playgroud)

非常感谢你.

cwe*_*ton 58

问题#180中所述

您也可以使用内置Dropzone.forElement功能.

var myDropzone = Dropzone.forElement("#mydropzone");
Run Code Online (Sandbox Code Playgroud)


Jor*_*dan 10

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

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


Luc*_*lin 7

如前所述,您可以使用 dropzone's forElement,它反过来只检查element.dropzone,其中 'element' 是本机的(不是 jquery obj)。因此,要合并、总结、解释和扩展前面的答案,您可以这样做:

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

或者更好,用简单的js:

var element = document.querySelector("#mydropzone");
Run Code Online (Sandbox Code Playgroud)

然后像这样获取拖放区:

element.dropzone
Run Code Online (Sandbox Code Playgroud)

或者,更简洁(这里是纯 js):

var dzone = document.querySelector("#mydropzone").dropzone
Run Code Online (Sandbox Code Playgroud)

仅供参考,当前 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;
};
Run Code Online (Sandbox Code Playgroud)


Fab*_*rts 5

使用 jQuery 访问实例的简单方法,如果它已经被初始化:

var dropzone = $(this).get(0).dropzone;
Run Code Online (Sandbox Code Playgroud)