Question

J'écris mon propre module Drupal 7, et d'utiliser comme JQuery en elle.

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

Mais je reçois cette erreur:

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

Il semble que JQuery est pas chargé. Dans le cas contraire devrait être défini $.

Bien que je fait inclure dans l'en-tête:

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

Dois-je faire quoi que ce soit d'autre pour activer JQuery dans Drupal? Est-$ par Drupal être écrasé?

C'est le site: http://rockfinder.orgapage.de

Était-ce utile?

La solution

A partir du guide de mise à niveau Drupal 7:

  

Javascript doit être compatible   avec d'autres bibliothèques que jQuery par   l'ajout d'un petit emballage autour de votre   code existant:

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

Le pas de volonté globale $ plus se référer à   l'objet jquery. Cependant, cette   la construction, la variable locale $   se référer à jquery, permettant à votre   le code d'accès par jQuery $   De toute façon, alors que le code ne sera pas   conflit avec d'autres bibliothèques qui utilisent des   le global $.

Vous pouvez aussi utiliser la variable 'jQuery' au lieu de la variable $ dans votre code.

Autres conseils

Selon Firebug, votre fichier jQuery est chargé:

text alt

Mais le $ est écrasé par quelque chose d'autre:

text alt


Ce que vous devez faire est encapsulent l'utilisation de la variable $ avec une fonction qui se invoque en utilisant l'objet jQuery comme premier argument est réel:

(function ($) {

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

}(jQuery));

Il y a des chances que votre script n'est pas initialisé cette façon, vous devrez utiliser Drupal.behaviors.YOURTHEMENAME

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

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

}

};
})(jQuery);    

Vous pouvez créer le fichier séparé pour js et que le fichier d'ajouter à l'aide de ce qui suit:

drupal_add_js('path', 'module_name');

« $ n'est pas une fonction » est une erreur très commune que vous pouvez rencontrer en travaillant avec jQuery. Vous pouvez essayer toutes les réponses ci-dessous:

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

ou

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

En gros, cela permettra à notre code à exécuter et utilisez le raccourci $ pour JQuery.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top