Ich habe ein einfaches jQuery-Skript in einem WordPress-Plugin, das einen jQuery-Wrapper wie diesen verwendet:
$(document).ready(function(){
// jQuery code is in here
});
Ich rufe dieses Skript aus dem WordPress-Dashboard auf und lade es, nachdem das jQuery-Framework geladen wurde.
Wenn ich die Seite in Firebug überprüfe, erhalte ich ständig die Fehlermeldung:
TypeError: $ ist keine Funktion
$ (Dokument) .ready (Funktion () {
Sollte ich das Skript vielleicht in diese Funktion einbinden:
(function($){
// jQuery code is in here
})(jQuery);
Ich habe diesen Fehler einige Male gehabt und bin mir nicht sicher, wie ich damit umgehen soll.
Jede Hilfe wäre sehr dankbar.
$
Konsole eingeben und die Eingabetaste drücken, was sehen Sie?Antworten:
Wenn Sie jQuery in Wordpress in die Warteschlange stellen, müssen Sie dies standardmäßig verwenden
jQuery
und es$
wird nicht verwendet (dies dient der Kompatibilität mit anderen Bibliotheken).Ihre Lösung zum Einwickeln
function
funktioniert einwandfrei, oder Sie können jQuery auf andere Weise laden (aber das ist in Wordpress wahrscheinlich keine gute Idee).Wenn Sie verwenden müssen
document.ready
, können Sie tatsächlich$
in den Funktionsaufruf übergehen :quelle
jQuery(function ($) { ...
, müssen SiejQuery
anstelle von$
Dies sollte das Problem beheben:
Einfach ausgedrückt, WordPress führt seine eigenen Skripte aus, bevor Sie können, und sie geben die
$
Variable frei, damit sie nicht mit anderen Bibliotheken kollidiert. Dies ist absolut sinnvoll, da WordPress für alle Arten von Websites, Apps und natürlich Blogs verwendet wird.Aus ihrer Dokumentation:
quelle
Diese Lösung hat bei mir funktioniert
Verschieben Sie Ihren Code in den Verschluss und verwenden Sie
$
stattdessenjQuery
Ich habe die obige Lösung in /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma gefunden
... nachdem ich zu viel gesucht habe
quelle
Sie können Konflikte wie diese vermeiden
quelle
Dank an Ashwani Panwar und Cyssoo: https://stackoverflow.com/a/29341144/3010027
quelle
Versuche dies:
quelle
Sie müssen $ in function () übergeben
quelle
Ersetzen Sie das
$
ZeichenjQuery
wie folgt:quelle
Überprüfen Sie Ihre jQuery-Referenzen. Es ist möglich, dass Sie entweder mehrmals darauf verweisen oder Ihre Funktion zu früh aufrufen (bevor jQuery definiert wird). Sie können versuchen, wie in meinen Kommentaren erwähnt, eine beliebige jQuery-Referenz oben in Ihre Datei (im Kopf) einfügen und prüfen, ob dies hilfreich ist.
Wenn Sie die Kapselung von jQuery verwenden, sollte dies in diesem Fall nicht helfen. Bitte versuchen Sie es, weil ich denke, dass es hübscher und offensichtlicher ist, aber wenn jQuery nicht definiert ist, werden Sie die gleichen Fehler erhalten.
Am Ende ... ist jQuery derzeit nicht definiert.
quelle
script
VerweiseJQuery
nach oben zu verschieben,index.html
und es wird wahrscheinlich funktionierenAußerdem finde ich die gute Lösung für den jQuery noConflict-Modus.
Ich habe diese Lösung von hier aus gefunden. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
quelle
Verwenden
anstatt
oder
Innerhalb der Funktion zeigt $ wie erwartet auf jQuery
quelle
Was hat bei mir funktioniert? Die erste Bibliothek, die importiert wird, ist die Abfragebibliothek. Rufen Sie anschließend die Methode jQuery.noConflict () auf.
quelle
quelle
Verwenden Sie jetzt jq anstelle von jQuery
quelle
Dieses Problem tritt auf, wenn Ihr Funktionsname und einer der ID-Namen in der Datei identisch sind. Stellen Sie einfach sicher, dass alle Ihre ID-Namen in der Datei eindeutig sind.
quelle
Sie können verwenden
oder
quelle