2011-04-14 11 views
7

jQuery File Uploader: https://github.com/blueimp/jQuery-File-UploadjQuery, ¿cómo comprobar si un complemento ya se ha aplicado a un div?

Estoy usando el complemento anterior. ¿Cómo en jQuery puedo verificar si el archivoUpload ya se ha aplicado?

me sale el siguiente error ahora:

Uncaught FileUpload with namespace "file_upload" already assigned to this element 
jQuery.jQuery.extend._Deferred.deferred.resolveWithjquery-1.5.1.js:869 
donejquery-1.5.1.js:6591 
jQuery.ajaxTransport.send.callbackjquery-1.5.1.js:7382 

¿Hay una manera de comprobar antes de mi función de llamadas:

$('.upload').fileUploadUI({ 
......... 
......... 
......... 

Gracias

Respuesta

16

Puede añadir/set una clase como bandera de géneros. En este caso, vamos a añadir una clase llamada applied

//scroll through each upload item 
$('.upload').each(function(){ 

    //Make sure class is not found 
    if (!$(this).hasClass('applied')) 

     //Apply Class and Upload Plugin 
     $(this).addClass('applied').fileUploadUI({...}); 
}); 

actualización como se señala más adelante por yoavmatchulsky, también se puede, hacer más fácil

$('.upload:not(.applied)').addClass('applied').fileUploadUI({...}); 
+5

o utilizar $ ('subir: no (.applied)') .fileUploadUI (...) – yoavmatchulsky

2

La carga de archivos de jQuery plugin de tiendas a referencia a su controlador FileUpload como objeto jQuery data.
El mensaje de error "FileUpload with namespace" file_upload "ya asignado a este elemento" proviene de la verificación del complemento para esta referencia de datos.

Puede inicializar el complemento de la siguiente manera para evitar este error:

$('.upload').not(function() { return $(this).data('file_upload'); }).fileUploadUI({/*...*/}); 
+0

Gracias, esto resolvió mis problemas. –

2

También puede hacer esto

if(undefined != $('.upload').data('blueimp-fileupload')){ 
    console.log('plugin already applied to the element'); 
} 
else console.log('plugin not applied to the element'); 
+1

ESTA debería ser la respuesta. A veces no tenemos control para modificar el código. (Piense, prueba de selenio de código de terceros.) –

+1

¡Simple y hermoso! –

Cuestiones relacionadas