Получить экземпляр/объект Dropzone с помощью jQuery

я использую jQuery для работы с dropzone. например,

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

мне нужно получить экземпляр Dropzone, чтобы я мог вызвать этот метод:

myDropzone.processQueue()

как я могу этого достичь? Возможно ли это?

другими словами, как я могу инициализировать зоне падения с помощью

$("#mydropzone").dropzone({ url: "/file/post" });

но в то же время получить экземпляр объекта, как если бы я инициализировать его с помощью:

var myDropzone = new Dropzone("#mydropzone", { url: "/file/post"});

поэтому я могу позвонить:

myDropzone.processQueue()

большое спасибо.

4 ответов


скрипт, кажется, добавляет dropzone объект для данного element. Так что вы можете сделать что-то вроде этого :

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

как описано в выпуск #180

вы также можете использовать встроенный в


простой способ доступа к экземпляру с помощью jQuery, если он уже инициализирован:

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

как указано выше, вы можете использовать Dropzone в forElement, который в свою очередь просто проверяет element.dropzone, где "элемент" является родным (не jQuery obj). Итак, чтобы объединить, суммировать, объяснить и развернуть предыдущие ответы, вы можете сделать так:

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

или лучше, просто в JS:

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

тогда получите dropzone следующим образом:

element.dropzone

или, более сжатый (простой js здесь):

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

просто для справки, текущий 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;
};