2010-08-21 10 views
5

No puedo entender por qué no funciona un plugin jquery (decodificación de codificación base64) dentro de una función de evento.Implementación de la función JQuery base64

De esta manera funciona:

$(document).ready(function(){ 
    data = $.base64Encode('something'); 
    alert(data); 
    }); 

Pero cuando se trata de añadir en una función de eventos, tengo la $ .base64Encode no es una función de error

$(document).ready(function(){ 
    $('#submit').click(function(e){ 
     data = $.base64Encode('something'); 
     alert(data); 
     e.preventDefault(); 
    }); 
    }); 

se encontró que el plugin de jQuery at: http://plugins.jquery.com/project/base64

+0

¿Puede mostrar el encabezado del documento completo? (Al menos todo lo relacionado con las secuencias de comandos) –

+2

¿Es posible que incluya jQuery en la página dos veces? –

+0

@Nick Craver Publique como respuesta y lo aceptará. Esa es la respuesta. – Pentium10

Respuesta

4

Comprobar que no se está incluyendo jQuery dos veces en la página. Lo que hace esto es cargar el primero, el complemento se define en ese objetojQuery, y cuando jQuery se incluye por segunda vez, el objeto window.jQuery queda anulado ... y el complemento no estará en él :)

Verás esto cuando lo ejecutes más tarde, mientras que tu document.ready podría estar ubicado antes de la 2da inclusión de jQuery.

+0

Por favor, consulte la otra pregunta relacionada de mi amigo también, es posible que conozca una respuesta para ello: http://stackoverflow.com/questions/3538849/zfdebug-jquery-interference – Pentium10

0

Funciona para mí. Es posible que tenga un error Javascript no relacionado que causa que la biblioteca base64 no se cargue correctamente.

0

en la cabecera que tengo

<html> 
<head> 
<title>{TITLE}</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<link rel="stylesheet" href="css/main.css" type="text/css" media="screen" /> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js'></script> 
<script type='text/javascript' src="js/Jquery/jquery.base64.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 

    $('#submit').click(function(e){ 
     e.preventDefault(); 
     data = $.base64Encode('something'); 
    alert(data); 
    }); 
}); 

</script> 
</head> 

y un formulario con el botón de enviar

<input id="submit" type="submit" name="Submit" value="Submit" class="button"> 

pero como he mencionado si pongo fuera de la función de clic del data = $.base64Encode('something'); el entonces funciona.

Más complicando la cosa Yo uso Zend Framework y FastTemplate

1

Nick Craver tiene derecho! Yo uso Zfdebug para Zend framework y eso ya incluye JQUERY, y he incluido dos veces debido a que ZF aut incluye JQUERY. Gracias

hice una nueva pregunta relacionada con cómo puedo incluir solamente una vez Jquery en un entorno específico Zfdebug ZFdebug Jquery interference

+0

Hice un cambio e incluí el complemento antes de la primera inclusión de Jquery, ahora funciona, pero cuando puse la aplicación en producción (esto elimina la primera inclusión de Jquery, entonces no puedo registrar el complemento en ese Jquery) problema más detallado en el enlace superior – Kszili

Cuestiones relacionadas