it-swarm.com.de

Verwendung von JQuery in Drupal 7

Ich schreibe mein eigenes Drupal 7-Modul und verwende JQuery gerne darin.

$('#field').toggle();

Aber ich bekomme diesen Fehler:

TypeError: Property '$' of object [object DOMWindow] is not a function

Es scheint, dass JQuery nicht geladen ist. Ansonsten sollte $ definiert werden.

Obwohl ich es tatsächlich in die Kopfzeile einbeziehe:

<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>

Muss ich noch etwas tun, um JQuery in Drupal zu aktivieren? Wird $ von Drupal überschrieben?

Das ist die Website: http://rockfinder.orgapage.de

32
JochenJung

Aus dem Drupal 7 Upgrade Guide:

Javascript sollte kompatibel gemacht werden mit anderen Bibliotheken als jQuery von Hinzufügen eines kleinen Wrappers um Ihre vorhandener Code:

(function ($) {
  // Original JavaScript code.
})(jQuery);

$ Global verweist nicht mehr auf das Jquery-Objekt. Jedoch mit diesem Konstruktion die lokale Variable $ wird sich auf jquery beziehen, wodurch Ihr Code für den Zugriff auf jQuery über $ trotzdem, während der Code nicht Konflikt mit anderen Bibliotheken, die .__ verwenden. das $ global.

Sie können auch einfach die Variable 'jQuery' anstelle der $ -Variable in Ihrem Code verwenden.

89
Eaton

Laut Firebug wird Ihre jQuery-Datei geladen:

alt text

Der $ wird jedoch durch etwas anderes überschrieben:

alt text


Was Sie tun sollten, ist die Verwendung der $-Variablen mit einer Funktion zu kapseln, die sich selbst aufruft und das jQuery-Objekt als erstes tatsächliches Argument verwendet:

(function ($) {

 // in this function, you can use the $ which refers to the jQuery object

}(jQuery));
14
Andreas Grech

Wenn Ihr Skript nicht auf diese Weise initialisiert wird, müssen Sie Drupal.behaviors.YOURTHEMENAME verwenden

(function ($) {
Drupal.behaviors.YOURTHEMENAME = {
attach: function(context, settings) {

/*Add your js code here*/
alert('Code');

}

};
})(jQuery);    
8
Guus

Sie können die separate Datei für js erstellen und anschließend die js-Datei wie folgt hinzufügen:

drupal_add_js('path', 'module_name');
1
Yuri Kevin

"$ ist keine Funktion" ist ein sehr häufiger Fehler, der bei der Arbeit mit jQuery auftreten kann. Sie können die folgenden Antworten ausprobieren:

(function($){
//your can write your code here with $ prefix
})(jQuery);

OR

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

Im Grunde erlaubt dies, dass unser Code ausgeführt und die $ -Verknüpfung für JQuery verwendet wird.

0
Haripal Rao