- Ich benutze eine WordPress-Site.
- Ich füge dieses Skript in den Header ein.
Wenn das Skript geladen wird, wird folgende Fehlermeldung angezeigt:
TypeError: 'undefined' ist keine Funktion (Auswertung von '$ (document)')
Ich habe keine Ahnung, was es verursacht oder was es überhaupt bedeutet.
In Firebug bekomme ich folgendes:
$ ist keine Funktion
Net
Registerkarte von Firebug keine Fehler enthält (stellen Sie sicher, dass jQuery tatsächlich geladen wird).Antworten:
Wordpress verwendet jQuery standardmäßig im noConflict- Modus. Sie müssen es
jQuery
als Variablennamen referenzieren , nicht$
zB verwendenanstatt
Sie können dies einfach in eine selbstausführende Funktion
$
einbinden, die wieder auf jQuery verweist (und auch den globalen Namespace nicht verschmutzt), zquelle
jQuery(document)
anstatt$(document)
wo immer Sie wollen. Wenn Sie$
stattdessen verwenden möchten , erstellt das obige Skript einfach eine Funktion, die ein Argument$
akzeptiert und es dann weitergibtjQuery
. Kurz gesagt, zeigt innerhalb der Funktion$
wie erwartet auf jQuery.$(document).ready(function() { // code });
anstelle Ihres$(document);
... platziert, das wie ein Zauber funktioniert hat.Verwenden Sie jQuery's
noConflict
. Es hat Wunder für mich getanAngenommen, Sie haben jQuery in Ihr HTML aufgenommen
quelle
Benutze das:
quelle
Probieren Sie dieses Snippet aus:
Es hat bei mir funktioniert, vielleicht hilft es Ihnen auch.
quelle
Ich hatte dieses Problem nur auf Chrome.
Ich habe versucht hinzuzufügen
kurz vor dem anruf
Es funktionierte.
Vielen Dank
quelle
Überprüfen Sie auch, ob jQuery enthalten ist, gefolgt von einigen Komponenten / anderen Bibliotheken (z. B. jQuery UI), und schließen Sie dann versehentlich jQuery erneut ein. Dadurch wird jQuery neu definiert und die Komponenten-Helfer (z. B. .datepicker) werden aus der Instanz entfernt.
quelle
Platzieren Sie Ihren js-Code oben im Verschluss, um das Problem zu lösen.
quelle
Ich würde das benutzen
quelle
Ich habe auch viele Male mit solchen Problemen im Webentwicklungsträger konfrontiert. Eigentlich ist es kein JS-Konflikt. Wenn wir eine HTML-Website in den Browser laden, tritt kein solcher Fehler auf, aber wenn wir diese Art von Website über localhost laden, tritt ein solches Problem auf. Das liegt an localhost. Wenn wir Skripte über den lokalen Host laden, wird das Skript gescannt und die Ausgabe gerendert. Aber als wir localhost nicht benutzt haben. Es wird nur die Ausgabe gescannt. Beispiel: Wenn wir PHP-Code neben den lokalen Host schreiben und ohne Host ausführen, erhalten wir eine Fehlermeldung. Wenn der Code jedoch korrekt ist und über den Host ausgeführt wird, erhalten wir die tatsächliche Ausgabe. Wenn wir das Inspect-Element verwenden, erhalten wir den Ausgabecode im HTMl-Format, jedoch nicht im PHP-Format. Dies liegt am Rendern des Codes.
Dies ist ein Renderfehler. Um diesen JQuery-Code-Fehler zu beheben, verwendet eine der Lösungen möglicherweise diese Methode.
Dieser Code registriert '$' als Variable für die Funktion, indem jquery angewendet wird. Andernfalls wird die .js-Datei standardmäßig nur als Javascript gelesen.
quelle
Ich bin auch auf dieses Problem gestoßen, als ich jQuery in meinen Seitenkopf aufgenommen habe und nicht bemerkt habe, dass der Host es bereits automatisch in die Seite aufgenommen hat. Laden Sie also Ihre Seite live und überprüfen Sie die Quelle, um festzustellen, ob jQuery verlinkt ist.
quelle
Zwei Dinge:
quelle
Wickeln Sie das gesamte Skript dazwischen ...
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 Sie neben jQuery eine andere JavaScript-Bibliothek verwenden müssen, geben Sie die Kontrolle über $ mit einem Aufruf von $ .noConflict () an die andere Bibliothek zurück . Alte Referenzen von $ werden während der jQuery-Initialisierung gespeichert. noConflict () stellt sie einfach wieder her.
quelle
Sie können sowohl jQuery als auch $ in unter dem Snippet verwenden. es hat bei mir funktioniert
quelle
Sie können $ in function () übergeben
oder Sie können ersetzen
$(document);
mit dieserjQuery(document);
oder du kannst verwenden
jQuery.noConflict()
quelle