Schwierigkeit mit Django und jQuery (warum ist $ in der Admin App undefiniert?)

8

Es ist schon eine Weile her, seit ich mit jQuery gearbeitet habe; Ich denke, ich mache einen dummen Fehler.

Hier ist ein Django-Widget:

%Vor%

Hier ist die .js-Datei:

%Vor%

Das einzige alert() , das ausgelöst wird, ist das erste. Habe ich einen dummen Syntaxfehler oder etwas?

Muss ich mich auch Sorgen machen, wenn ein anderes Skript auf der Seite $(document).ready neu definiert? Ich nehme an, dass nachfolgende Definitionen meine eigenen überschreiben werden, also ist es sicherer für nachfolgende Definitionen, etwas zu tun wie:

%Vor%

jQuery ist bereits in der Seite enthalten, bis foowidget.js ist.

Update : Basierend auf dem Link von @ lazerscience habe ich stattdessen Folgendes versucht, aber es funktioniert immer noch genauso wie zuvor:

%Vor%

Update 2 : Seltsamerweise, wenn ich das tue:

%Vor%

Ich bekomme "undefiniert". Dies legt nahe, dass jQuery tatsächlich nicht initialisiert wird. Das verwirrt mich, weil das <head> beinhaltet:

%Vor%

Stellt mein Skript nach dem jQuery-Skript nicht sicher, dass $ definiert wird?

Update 3 : von jquery.min.js:

%Vor%

Sieht für mich richtig aus.

Dies ist von der Firebug-Konsole:

%Vor%

Update 4 : $ ist auf allen Seiten meiner Django-Site mit Ausnahme der Admin-App definiert. Seltsam ...

Update 5 : Das ist interessant.

jQuery.init.js :

%Vor%

Von der Konsole:

%Vor%     
Nick Heiner 17.01.2011, 01:29
quelle

6 Antworten

1

Sie können $(document).ready() beliebig oft auf einer Seite verwenden . Es definiert nichts anders als Sie es nennen, aber der Aufruf von ready() fügt Funktionen hinzu, die aufgerufen werden, wenn "das Dokument bereit ist". Um Ihren Code zu debuggen, z. Verwenden Sie Firebug, das Ihnen detailliertere Informationen darüber zeigt, wo der Fehler auftritt, wenn es welche gibt!

    
Bernhard Vallant 17.01.2011, 01:37
quelle
20

Wenn ich dies oben an meine .js-Datei anfüge, wird es behoben:

%Vor%

Ich bin mir nicht sicher, wie ich die Datei jquery.init.js entfernen soll, da mein Projekt keine Skripte enthält, die $ für etwas anderes als jQuery verwenden.

    
Nick Heiner 17.01.2011 17:11
quelle
3

Verwenden Sie die Firebug- oder Web Inspector JS-Konsole und geben Sie $ und / oder jQuery ein. Das ist der einfachste Weg herauszufinden, ob die Bibliothek korrekt geladen wurde. Im unwahrscheinlichen Fall, dass nur jQuery definiert ist, können Sie Ihr Skript in einen eigenen Bereich einbinden:

%Vor%

Wenn an der Konsole nichts definiert ist, liegt das Problem höchstwahrscheinlich an der Datei und ich würde AndiDogs Ansatz ausprobieren, um festzustellen, ob überhaupt etwas geladen ist.

    
polarblau 17.01.2011 08:21
quelle
3

Ich löste dieses Problem auf diese Weise, Sie müssen jquery.init.js (oft seine jquery.init.js von admin) in diese Datei hinzufügen, folgende Zeilen hinzufügen:

%Vor%

und du hast im ganzen Arbeitsbereich jquery und $. Zum besseren Code-Look bevorzuge ich meine eigene jquery-Init-Datei im Projekt.

    
jinni 20.07.2012 22:04
quelle
0

Sehen Sie sich in Firefox den Quellcode der Seite an und klicken Sie auf den Link "/media/js/jquery.min.js", um zu sehen, ob er geladen wurde. Höchstwahrscheinlich erhalten Sie einen 404, weil Sie die Medien-URL nicht korrekt definiert haben.

Sie können für diesen Zweck auch den Entwicklungsserver verwenden, der Ihnen alle Anfragen und den zurückgegebenen HTTP-Statuscode anzeigt.

    
AndiDog 17.01.2011 07:57
quelle
-1

Sie haben wahrscheinlich vergessen, {{ form.media }} in Ihre Vorlage aufzunehmen.

    
Teddy 17.01.2011 10:30
quelle

Tags und Links