2010-08-21 1 views
5

Non riesco a capire perché non funziona un plug-in jquery (decodifica codifica base64) all'interno di una funzione evento.Implementazione della funzione base64 JQuery

In questo modo funziona:

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

Ma quando si cerca di aggiungere una funzione di evento, ho l'$ .base64Encode non è una funzione errore

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

Il plugin jQuery è trovata a: http://plugins.jquery.com/project/base64

+0

Puoi mostrare l'intero documento? (Almeno tutto relativo allo script) –

+2

È possibile includere jQuery nella pagina due volte? –

+0

@Nick Craver Pubblicalo come risposta e lo accetterà. Questa è la risposta. – Pentium10

risposta

4

Verificare che non si è compreso jQuery due volte nella pagina. Quello che fa è il primo carichi, il plugin si definisce sul chejQuery oggetto, e quando jQuery è inclusa una seconda volta, l'oggetto viene sovrascritto window.jQuery ... e il plugin non sarà su di esso :)

Vedrai questo quando lo esegui più tardi, mentre il tuo document.ready potrebbe trovarsi prima della seconda inclusione di jQuery.

+0

Si prega di controllare l'altra domanda relativa del mio amico troppo, si potrebbe sapere una risposta per questo: http://stackoverflow.com/questions/3538849/zfdebug-jquery-interference – Pentium10

0

Funziona per me. Si potrebbe avere un errore Javascript non correlato che sta causando il caricamento corretto della libreria base64.

0

nell'intestazione ho

<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> 

e un modulo con il pulsante di invio

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

ma come ho già detto se ho messo al di fuori della funzione di clic del l'data = $.base64Encode('something'); allora funziona.

Più complicare la cosa che uso Zend Framework e FastTemplate

1

Nick Craver ha ragione! Io uso Zfdebug per Zend framework e questo include già JQUERY, e ho incluso due volte a causa di ZF aut include JQUERY. Grazie

ho fatto una nuova domanda relativa a come posso includere solo una volta Jquery in un ambiente specifico Zfdebug ZFdebug Jquery interference

+0

Ho apportato una modifica e incluso il plug-in prima della prima inclusione di Jquery, ora funziona, ma quando inserisco l'applicazione in produzione (questo elimina la prima inclusione di Jquery quindi non riesco a registrare il plug-in su quel Jquery) problema più dettagliato sul link superiore – Kszili