2010-08-21 9 views
5

Ich kann nicht herausfinden, warum nicht funktioniert ein Jquery-Plugin (Base64-Encode-Decodierung) innerhalb einer Ereignisfunktion.JQuery Base64-Funktion Implementierung

Auf diese Weise funktioniert:

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

Aber wenn es in einer Event-Funktion hinzuzufügen versuchen, erhalte ich die $ .base64Encode ist keine Funktion Fehler

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

Die jQuery-Plugin gefunden wird unter: http://plugins.jquery.com/project/base64

+0

Können Sie den vollständigen Dokumentenkopf anzeigen? (Zumindest alles Skript-bezogene) –

+2

Ist es möglich, dass Sie jQuery in der Seite zweimal enthalten? –

+0

@Nick Craver Post es als Antwort und wird es akzeptieren. Das ist die Antwort. – Pentium10

Antwort

4

Überprüfen Sie, ob Sie nicht jQuery zweimal auf der Seite enthält. Was dies tut, ist das erste lädt, das Plugin definiert sich auf , dassjQuery Objekt, und wenn jQuery ein zweites Mal enthalten ist, wird das window.jQuery Objekt überschrieben ... und das Plugin wird nicht darauf sein :)

Sie würden dies sehen, wenn Sie es später ausführen, während Ihr document.ready vor dem 2. jQuery-Einschluss gefunden werden könnte.

+0

Bitte überprüfen Sie die andere verwandte Frage meines Kumpels zu, Sie könnten eine Antwort dafür wissen: http://stackoverflow.com/questions/3538849/zfdebug-jquery-interference – Pentium10

0

Es funktioniert für mich. Möglicherweise haben Sie einen nicht verwandten JavaScript-Fehler, der dazu führt, dass die Base64-Bibliothek nicht korrekt geladen wird.

0

im Header Ich habe

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

und ein Formular mit der

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

Submit-Button, aber wie ich, wenn ich außerhalb der Klickfunktion setzen erwähnte das die data = $.base64Encode('something'); es dann funktioniert.

Mehr verkompliziert die Sache, die ich verwenden Zend Framework und Fasttemplate

1

Nick Craver hat Recht! Ich benutze Zfdebug für Zend Framework und das enthält bereits JQUERY, und ich zweimal wegen ZF enthalten Aut include JQUERY. Danke

ich eine neue Frage gestellt damit zusammen, wie kann ich sind nur einmal JQuery in einer Zfdebug spezifischen Umgebung ZFdebug Jquery interference

+0

Ich machte eine Änderung und enthielt das Plugin vor der ersten Jquery-Aufnahme, jetzt funktioniert es, aber wenn ich die Anwendung zur Produktion (Dies nimmt die erste Jquery-Aufnahme dann kann ich das Plugin auf dieser Jquery nicht registrieren) detailliertere Problem auf dem oberen Link – Kszili