javascript - elemento - Obtener instancia/objeto de Dropzone usando jQuery
title html attribute (5)
Uso jQuery para trabajar con Dropzone. p.ej
$("#mydropzone").dropzone({ /*options*/ });
Necesito obtener la instancia de Dropzone para poder llamar a este método:
myDropzone.processQueue()
¿Cómo puedo conseguir esto? ¿Es posible?
en otras palabras, ¿cómo puedo inicializar la zona de arrastre usando
$("#mydropzone").dropzone({ url: "/file/post" });
pero al mismo tiempo, obtenga la instancia del objeto como si lo inicializara usando:
var myDropzone = new Dropzone("#mydropzone", { url: "/file/post"});
así que puedo llamar:
myDropzone.processQueue()
Muchas gracias.
Como se describe en el número 180
También puede utilizar la función integrada en Dropzone.forElement
.
var myDropzone = Dropzone.forElement("#mydropzone");
Como se indicó anteriormente, puede usar el elemento de Dropzone para el forElement
, que a su vez solo comprueba element.dropzone
, donde ''element'' es el nativo (no jquery obj). Entonces, para combinar, resumir, explicar y expandir las respuestas anteriores, puede hacer lo siguiente:
var element = $("#mydropzone")[0]; // this is the way jquery gives you the original dom
O mejor, en un simple js:
var element = document.querySelector("#mydropzone");
entonces consigue la zona de caída como esta:
element.dropzone
O, más conciso (llano js aquí):
var dzone = document.querySelector("#mydropzone").dropzone
Solo para referencia, la fuente de forElement
actual de 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;
};
La secuencia de comandos parece agregar un objeto de zona de dropzone
al element
dado. Así que puedes hacer algo como esto:
var $dropZone = $("#mydropzone").dropzone({ /*options*/ });
// ...
$dropZone[0].dropzone.processQueue();
Una forma sencilla de acceder a la instancia con jQuery, si ya se ha inicializado:
var dropzone = $(this).get(0).dropzone;
parece simple con Dropzone. las instancias verifican con el id del elemento:
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;
}