TypeError: $ ist keine function beim Aufruf der jQuery-function

Ich habe ein einfaches jQuery-Skript in einem WordPress-Plugin, das einen jQuery-Wrapper wie folgt verwendet:

$(document).ready(function(){ // jQuery code is in here }); 

Ich rufe dieses Skript aus dem WordPress-Dashboard heraus und lade es nach dem Laden des jQuery-Frameworks.

Wenn ich die Seite in Firebug überprüfe, bekomme ich ständig die Fehlermeldung:

TypeError: $ ist keine function

$ (Dokument) .ready (function () {

Sollte ich das Script vielleicht in diese function einbinden:

 (function($){ // jQuery code is in here })(jQuery); 

Ich hatte diesen Fehler einige Male und bin mir nicht sicher, wie ich damit umgehen soll.

Jede Hilfe würde sehr geschätzt werden.

Solutions Collecting From Web of "TypeError: $ ist keine function beim Aufruf der jQuery-function"

Wenn Sie jQuery in WordPress in die Warteschlange stellen, müssen Sie standardmäßig jQuery verwenden, und $ wird nicht verwendet (dies dient der Kompatibilität mit anderen Bibliotheken).

Ihre Lösung, es in function verpacken, function gut, oder Sie können jQuery auf andere Weise laden (aber das ist wahrscheinlich keine gute Idee in WordPress).

Wenn Sie document.ready , können Sie $ tatsächlich an den functionsaufruf übergeben:

 jQuery(function ($) { ... 

Dies sollte es beheben:

 jQuery(document).ready(function($){ //you can now use $ as your jQuery object. var body = $( 'body' ); }); 

Einfach gesagt, WordPress führt ihre eigenen Scripts aus, bevor Sie können und sie geben das $ var frei, damit es 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:

Die in WordPress enthaltene jQuery-Bibliothek wird auf den noConflict () -Modus gesetzt (siehe wp-includes / js / jquery / jquery.js). Dies verhindert Kompatibilitätsprobleme mit anderen JavaScript-Bibliotheken, die WordPress verlinken kann.

Im Modus noConflict () ist die globale Verknüpfung $ für jQuery nicht verfügbar …

Diese Lösung hat für mich funktioniert

 ;(function($){ // your code })(jQuery); 

Verschieben Sie den Code in den Abschluss und verwenden Sie $ anstelle von jQuery

Ich habe die obige Lösung in https://magento.stackexchange.com/questions/33348/uncaught-type-error-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma gefunden

… nach zu viel suchen

Sie können Konflikte wie folgt vermeiden

 var jq=jQuery.noConflict(); jq(document).ready(function(){ alert("Hi this will not conflict now"); jq('selector').show(); }); 

Versuche dies:

   
 var $=jQuery.noConflict(); $(document).ready(function(){ // jQuery code is in here }); 

Kredit an Ashwani Panwar und Cyssoo Antwort: https://stackoverflow.com/a/29341144/3010027

Sie müssen $ in-function übergeben ()

  

Überprüfen Sie Ihre jQuery-Referenzen. Es ist möglich, dass Sie es mehr als einmal referenzieren oder Ihre function zu früh aufrufen (bevor jQuery definiert wird). Sie können versuchen, wie in meinen Kommentaren erwähnt und setzen Sie alle jQuery-Referenz an der Spitze Ihrer Datei (im Kopf) und sehen, ob das hilft.

Wenn Sie die Kapselung von jQuery verwenden, sollte es in diesem Fall nicht helfen. Bitte versuchen Sie es, weil ich denke, es ist schöner und offensichtlicher, aber wenn jQuery nicht definiert ist, erhalten Sie die gleichen Fehler.

Am Ende … ist jQuery momentan nicht definiert.

Was für mich funktioniert hat. Die erste zu importierende Bibliothek ist die Abfragebibliothek und anschließend die jQuery.noConflict () -Methode.

    
  (function ($) {
   "verwenden Sie streng";

   $ (function () {

     // Dein Code hier

   });

 } (jQuery));
  

Verwenden Sie jetzt jq anstelle von jQuery

Sie stoßen auf dieses Problem, wenn Ihr functionsname und einer der ID-Namen in der Datei identisch sind. Stellen Sie nur sicher, dass alle Ihre ID-Namen in der Datei eindeutig sind.

Benutzen

 jQuery(document). 

Anstatt von

 $(document). 

oder

Innerhalb der function verweist $ auf jQuery, wie Sie es erwarten würden

 (function ($) { $(document). }(jQuery)); 

Außerdem finde ich die gute Lösung, um den jQuery noConflict-Modus zu verwenden.

 (function($){ $(document).ready(function(){ // write code here }); // or also you can write jquery code like this jQuery(document).ready(function(){ // write code here }); })(jQuery); 

Ich habe diese Lösung von hier gefunden. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/

Ersetzen Sie $ sign durch jQuery wie jQuery :

 jQuery(function(){ //your code here });