javascript enqueue TypeError: $ ist in jquery nicht definiert



wordpress jquery plugin (1)

Sie müssen nichts tun, um $ für jQuery anders als jQuery zu definieren. Die Definition ist Teil des jQuery-Skripts.

Dieser Fehler sagt Ihnen eines von drei Dingen. Entweder:

  1. Sie haben jQuery vor dem Einfügen des Plugins (oder Ihrem Versuch, fehlgeschlagen zu haben, z. B. 404) nicht eingeschlossen oder

  2. Sie laden etwas anderes nach dem Laden von jQuery, das das $ -Symbol übernimmt, oder

  3. Sie rufen jQuery.noConflict() , wodurch das Symbol $ jQuery.noConflict() .

Basierend auf Ihrer $ = jQuery; Versuch, nicht gearbeitet zu haben, würde ich sagen, es ist # 1. Achten Sie also darauf, dass das Skript-Tag an der richtigen Stelle ist, und stellen Sie sicher, dass Sie keinen 404-Fehler (oder einen ähnlichen Fehler) erhalten.

Aktualisieren Sie nach Ihrem Kommentar:

Ich benutze ein Plugin namens "google libraries". Das ruft jQuery.noConflict () auf, nachdem es ausgeführt wurde.

Zunächst noConflict scheint mir ein Wordpress-Plugin, das noConflict , eine schlechte Idee zu sein. In ähnlicher Weise sollte tabcordian sich nicht auf das $ -Symbol verlassen; jQuery-Plugins dürfen sich nicht auf $ da die Leute noConflict verwenden noConflict ! Und doch zeigt ein kurzer Blick auf die Tabcordian-Quelle, dass sie genau das tut: Sich auf $ .

Ich würde empfehlen Tabcordian zu fälschen und es zu korrigieren. Die übliche Vorgehensweise in einem Plugin ist das Öffnen mit (function($){ und endend mit })(jQuery); , so was:

(function($) {
    // plugin code here, can use $ because it refers to our argument,
    // not the global symbol that may not be there
})(jQuery);

Re Tabcordian Verwendung von .call(this) , die Sie verwirrt:

(function() {
    // ...tabcordian source...
}).call(this);

Das ist völlig sinnlos, wenn Sie innerhalb der Funktion keinen strikten Modus verwenden, was Tabcordian nicht ist. (Wenn Sie den strikten Modus verwenden, können Sie damit weiterhin auf das globale Objekt innerhalb der Funktion verweisen.) Da diese Quelle jedoch aus CoffeeScript generiert wird, handelt es sich wahrscheinlich um CoffeeScript-Beispieltexte, die den strikten Modus unterstützen .

Ich versuche, die "Tabcordion" -Bibliothek in jquery auf einer Wordpress-basierten Website zu verwenden. Die Tabcordion-Javascript-Datei wird in die Warteschlange eingereiht und erscheint nach der Jquery-Datei (so dass das Bit in Ordnung aussieht).

Der Beginn des Jquery-Codes ist:

(function($) {
 var Tabcordion;

 $.fn.tabcordion = function(option) {
   return this.each(function() {
    var $this, data, options;
    $this = $(this);
    // rest of code ....

Wenn ich meine Seite lade, erhalte ich den Fehler "TypeError: $ is undefined" in Firebug

Nach ein bisschen Googeln habe ich alle $ geändert. in jQuery.

Das sortiert einige der Probleme aus, aber ich bekomme dann eine Fehlermeldung über die Zeile:

 $this = $(this);

Ich nehme an, dass ich $ nicht für jquery definiert habe. Ich habe versucht, eine Zeile am Anfang der Funktion hinzuzufügen:

$ = jQuery;

aber das hat nicht funktioniert.

Irgendwelche Ideen, wie ich das $ dazu bringen kann, sich zu verhalten?

Ich habe ein anderes Skript, das funktioniert, das eingeschlossen ist von:

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

Aber das Ende der Tabcordion hat:

(function($) {
  // tabcordion code....
}).call(this);

Und das "call (this)" bit wirft mich?

Irgendwelche Ideen?





wordpress