Ich habe ein einfaches jquery click event
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
und eine in site.master definierte jquery-Referenz
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
Ich habe überprüft, ob das Skript korrekt aufgelöst wird. Ich kann das Markup sehen und das Skript direkt in Firebug anzeigen. Ich muss also gefunden werden. Ich bekomme jedoch immer noch:
$ ist nicht definiert
und keine der Fragen funktioniert. Ich habe auch die verschiedenen Variationen davon ausprobiert, wie $ (document) .ready und jQuery usw.
Es ist eine MVC 2-App auf .net 3.5. Ich bin mir sicher, dass ich sehr dicht bin. Überall auf Google heißt es, dass überprüft wird, ob die Datei korrekt referenziert ist. Ich habe sie überprüft und erneut überprüft. Bitte raten Sie! : /
javascript
jquery
asp.net-mvc
Paul Creasey
quelle
quelle
Antworten:
Dieser Fehler kann nur durch eines von drei Dingen verursacht werden:
Stellen Sie zunächst sicher, dass das Skript, das ordnungsgemäß aufgerufen wird, so aussehen sollte
und sollte keine asynchronen oder verzögerten Attribute haben .
Überprüfen Sie anschließend das Firebug- Netzfenster, um festzustellen, ob die Datei tatsächlich ordnungsgemäß geladen wird. Wenn nicht, wird es rot hervorgehoben und daneben steht "404". Wenn die Datei ordnungsgemäß geladen wird, bedeutet dies, dass das Problem Nummer 2 ist.
Stellen Sie sicher, dass der gesamte JQuery-Javascript-Code in einem Codeblock ausgeführt wird, z.
Dadurch wird sichergestellt, dass Ihr Code nach der Initialisierung von jQuery geladen wird.
Als letztes müssen Sie überprüfen, ob Sie keine Plugins laden, bevor Sie jQuery laden. Plugins erweitern das Objekt "$". Wenn Sie also vor dem Laden des jQuery-Kerns ein Plugin laden, wird der von Ihnen beschriebene Fehler angezeigt.
Hinweis: Wenn Sie Code laden, für dessen Ausführung jQuery nicht erforderlich ist, muss er nicht im jQuery-fähigen Handler abgelegt werden. Dieser Code kann mit getrennt werden
document.readyState
.quelle
$(document)
wird auch nicht funktionieren, es sei denn, Sie haben ein Skript-Tag einschließlich jQuery vor dieser Anweisung ...Möglicherweise haben Sie Ihr Skript-Tag aufgerufen, bevor das jquery-Skript aufgerufen wird.
Dies führt dazu, dass $ nicht definiert ist
Setzen Sie die Datei jquery.js vor Ihr Skript-Tag und es wird funktionieren;) wie folgt:
quelle
@section Scripts
Tag schreibenZuerst müssen Sie sicherstellen, dass das jQuery-Skript geladen ist. Dies kann von einem CDN oder lokal auf Ihrer Website stammen. Wenn Sie dies nicht zuerst laden, bevor Sie versuchen, jQuery zu verwenden, wird Ihnen mitgeteilt, dass jQuery nicht definiert ist.
Dies kann sich im HEAD oder in der Fußzeile der Seite befinden. Stellen Sie einfach sicher, dass Sie es laden, bevor Sie versuchen, andere jQuery-Inhalte aufzurufen.
Dann müssen Sie eine der beiden folgenden Lösungen verwenden
oder
Bitte beachten Sie, dass $ (document) .ready (function () {// code here}) oft; wird nicht funktionieren.
quelle
Wenn sich der Aufruf des jQuery-Plugins neben dem
</body>
befindet und Ihr Skript zuvor geladen wurde, sollten Sie Ihren Code nach demwindow.onload
Ereignis wie folgt ausführen lassen :`
Daher wird Ihr Code erst nach dem Laden des Fensters ausgeführt, wenn alle Assets geladen wurden. In diesem Punkt wird jQuery (
$
) definiert.Wenn Sie das verwenden:
`
Das
$
ist zu diesem Zeitpunkt noch nicht definiert, da es aufgerufen wird, bevor die jQuery geladen wird, und Ihr Skript in dieser ersten Zeile auf der Konsole fehlschlägt.quelle
Ich habe einfach das Gleiche getan und festgestellt, dass ich eine Menge davon hatte
Also wurden sie geladen, aber kein weiterer Hinweis darauf, warum es nicht funktionierte. Unnötig zu erwähnen, dass die richtige Schreibweise das Problem behoben hat.
quelle
Verwenden Sie einen Skriptabschnitt in der Ansicht und im Master-Layout.
Fügen Sie alle in Ihrer Ansicht definierten Skripte in einen Abschnitt "Skripte" der Ansicht ein. Auf diese Weise kann das Master-Layout dies laden, nachdem alle anderen Skripte geladen wurden. Dies ist die Standardeinstellung beim Starten eines neuen MVC5-Webprojekts. Ich bin mir bei früheren Versionen nicht sicher.
Ansichten / Foo / MyView.cshtml:
Views / Shared / _Layout.cshtml
Beachten Sie, wie der Skripte Abschnitt zuletzt in der Master - Layout - Datei wiedergegeben wird.
quelle
Stellen Sie sicher, dass Sie jquery wirklich laden. Dies ist keine jquery - es ist die Benutzeroberfläche!
Dies ist eine korrekte Skriptquelle für jquery:
quelle
Wie oben erwähnt, geschieht dies aufgrund des Konflikts von $ variable.
Ich habe dieses Problem behoben, indem ich eine sekundäre Variable für jQuery ohne Konflikt reserviert habe.
und dann überall verwenden
Weitere Details finden Sie hier
quelle
Dies bedeutet, dass Ihre jQuery-Bibliothek noch nicht geladen wurde.
Sie können Ihren Code verschieben, nachdem Sie die jQuery-Bibliothek abgerufen haben.
oder Sie können so etwas verwenden
quelle
Verwenden Sie andere JavaScript-Bibliotheken? In diesem Fall müssen Sie jQuery wahrscheinlich im Kompatibilitätsmodus verwenden:
http://docs.jquery.com/Using_jQuery_with_Other_Libraries
quelle
Nach einigen Tests habe ich eine schnelle Lösung gefunden, die Sie oben auf Ihrer Indexseite hinzufügen können:
es funktioniert sehr gut :)
quelle
Ich habe die gleiche Fehlermeldung erhalten, als ich die jQuery-Referenz falsch geschrieben und stattdessen
type="text/javascript"
"... javascirpt" eingegeben habe. ;)quelle
type="text/css"
. Danke, dass du meine geistige Gesundheit gerettet hast!type="javascript"
. Verschwendete 30 Minuten, um es zu finden.Es hört sich so an, als würde jQuery nicht richtig geladen. Welche Quelle / Version verwenden Sie?
Alternativ kann es sich um eine Namespace-Kollision handeln. Versuchen Sie daher, jQuery explizit anstelle von zu verwenden
$
. Wenn dies funktioniert, möchten Sie möglicherweisenoConflict
sicherstellen, dass der andere verwendete Code$
nicht beschädigt wird.quelle
Dieser Fehler bedeutet, dass jQuery noch nicht auf der Seite geladen wurde. Die Verwendung
$(document).ready(...)
oder eine andere Variante davon nützt nichts, ebenso$
wie die jQuery-Funktion.Die Verwendung
window.onload
sollte hier funktionieren. Beachten Sie, dass nur eine Funktion zugewiesen werden kannwindow.onload
. Um zu vermeiden, dass die ursprüngliche Onload-Logik verloren geht, können Sie die ursprüngliche Funktion folgendermaßen dekorieren:Dadurch wird die ursprünglich zugewiesene Funktion ausgeführt
window.onload
und anschließend ausgeführt// YOUR JQUERY
.Weitere Informationen zum Dekorationsmuster finden Sie unter https://en.wikipedia.org/wiki/Decorator_pattern .
quelle
Ich benutze Url.Content und habe nie ein Problem.
quelle
In der Lösung wird Folgendes erwähnt: "Als letztes müssen Sie sicherstellen, dass Sie keine Plugins laden, bevor Sie jQuery laden. Plugins erweitern das Objekt" $ ". Wenn Sie also ein Plugin laden, bevor Sie jQuery Core laden, müssen Sie dies tun Ich werde den von Ihnen beschriebenen Fehler erhalten. "
Um dies zu vermeiden -
Viele JavaScript-Bibliotheken verwenden $ als Funktions- oder Variablennamen, genau wie jQuery. In jQuerys Fall ist $ nur ein Alias für jQuery, sodass alle Funktionen ohne Verwendung von $ verfügbar sind. Wenn wir neben jQuery eine andere JavaScript-Bibliothek verwenden müssen, können wir die Kontrolle über $ mit einem Aufruf von $ .noConflict () an die andere Bibliothek zurückgeben:
quelle
Ich hatte dieses Problem einmal ohne ersichtlichen Grund. Es passierte lokal, während ich den Aspnet-Entwicklungsserver durchlief. Es hatte funktioniert und ich habe alles in einen Zustand zurückversetzt, in dem es zuvor funktioniert hatte und es immer noch nicht funktioniert hat. Ich habe in den Chrome-Debugger geschaut und die jquery-1.7.1.min.js hatte ohne Probleme geladen. Es war alles sehr verwirrend. Ich weiß immer noch nicht, was das Problem war, aber ich schließe den Browser, schließe den Entwicklungsserver und versuche es dann erneut.
quelle
Platzieren Sie einfach die jquery-URL oben auf Ihrem jquery-Code
so was--
quelle
Ich hatte das gleiche Problem und das lag daran, dass mein Verweis auf jQuery.js nicht im Tag enthalten war. Nachdem ich das umgestellt hatte, fing alles an zu funktionieren.
Anthony
quelle
Überprüfen Sie, ob der genaue Pfad Ihrer JQuery-Datei enthalten ist.
<script src="assets/plugins/jquery/jquery.min.js"></script>
Wenn Sie dies unten auf Ihrer Seite hinzufügen, rufen Sie bitte alle die JS-Funktion unterhalb dieser Deklaration auf.
Überprüfen Sie mit diesem Code-Test,
Frieden!
quelle
Wir haben das gleiche Problem ... aber aus Versehen habe ich die Ordnereigenschaften überprüft und etwas festgelegt ...
Sie müssen die Eigenschaften aller Ordner überprüfen, auf die Sie zugreifen.
Ich hoffe, dass dies die Lösung ist ......
quelle
Wenn Sie jQuery in asp.net verwenden und eine Masterseite verwenden und dort die jquery-Quelldatei laden, stellen Sie sicher, dass Sie den Header contentplaceholder nach allen jquery-Skriptreferenzen haben.
Ich hatte ein Problem, bei dem alle Seiten, die diese Masterseite verwendeten, "$ ist nicht definiert" zurückgaben, einfach weil die falsche Reihenfolge dazu führte, dass der clientseitige Code ausgeführt wurde, bevor das jquery-Objekt erstellt wurde. Stellen Sie also sicher, dass Sie:
Auf diese Weise wird der Code in der richtigen Reihenfolge ausgeführt und Sie können jQuery-Code auf den untergeordneten Seiten ausführen.
quelle
In meinem Fall habe ich auf von Google gehostete JQuery verwiesen. Es war richtig enthalten, aber ich war auf einer HTTPS-Seite und habe es über HTTP aufgerufen. Nachdem ich das Problem behoben (oder unsicheren Inhalt zugelassen) hatte, wurde es sofort ausgelöst.
quelle
Ich hatte das gleiche Problem und konnte nicht herausfinden, was es verursachte. Ich habe kürzlich meine HTML-Dateien von Japanisch nach UTF-8 konvertiert, aber mit den Skriptdateien nichts gemacht. Irgendwie wurde jquery-1.10.2.min.js in diesem Prozess beschädigt (ich habe immer noch keine Ahnung wie). Das Ersetzen von jquery-1.10.2.min.js durch das Original hat das Problem behoben.
quelle
Es scheint, dass das Firebug-Problem behoben ist, wenn Sie Ihre jquery.js-Dateien im selben Ordner oder in einigen Unterordnern finden, in denen sich Ihre HTML-Datei befindet. Wenn sich Ihr HTML-Code beispielsweise unter C: / folder1 / befindet, sollten sich Ihre JS-Dateien ebenfalls unter C: / folder1 / (oder C: / folder1 / folder2 usw.) befinden und im HTML-Dokument entsprechend adressiert sein. hoffe das hilft.
quelle
Ich habe das gleiche Problem und kein Fall löst mich das Problem. Das einzige, was für mich funktioniert, ist, dass es in die Site.master-Datei eingefügt wird, das nächste:
Mit src = "<% = ResolveUrl (" ") ... ist das Laden von jQuery in den Inhaltsseiten korrekt.
quelle
Ich hatte ein sehr ähnliches Problem. In meiner C # MVC-Anwendung wurde JQuery nicht erkannt. Ich musste das @ Scripts.Render ("~ / bundles / jquery") vom Ende meiner _Layout.cshtml-Datei an den Kopf des Abschnitts verschieben. Stellen Sie außerdem sicher, dass Sie Jquery als Nuget-Paket gekauft haben, wenn Sie Visual Studio verwenden!
quelle
Es gibt eine Möglichkeit, Javascript automatisch zu laden, bevor der Rest des Codes ausgeführt wird.
Gehen Sie zu Views \ Shared_Layout.html und fügen Sie Folgendes hinzu
quelle
Wenn das
script
Tag eindefer
Attribut hat, wird der Fehler angezeigtund muss das Attribut
defer
aus demscript
Tag entfernenquelle
Dies ist das häufigste Problem, um dies zu beheben. Sie müssen einen Punkt überprüfen
Ausführliche Informationen finden Sie in diesem Blog. Klicken Sie hier
quelle