Domanda

Sto scrivendo il mio modulo di Drupal 7, e come utilizzare JQuery in esso.

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

Ma io sto ottenendo questo errore:

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

Sembra che JQuery non è stato caricato. In caso contrario, dovrebbe essere definito $.

Anche se io in realtà includerlo nell'intestazione:

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

Devo fare altro per attivare JQuery in Drupal? È $ sovrascrittura con Drupal?

Questo è il sito web: http://rockfinder.orgapage.de

È stato utile?

Soluzione

Dalla guida di aggiornamento Drupal 7:

Javascript dovrebbe essere compatibile con altre biblioteche di jQuery per l'aggiunta di un piccolo involucro intorno alla vostra codice esistente:

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

La volontà globale $ non più riferite alla l'oggetto jquery. Tuttavia, con questo la costruzione, la $ variabile locale farà riferimento a jQuery, permettendo che la vostra codice per l'accesso jQuery attraverso $ in ogni caso, mentre il codice non lo farà conflitto con altre librerie che uso il $ globale.

Si può anche semplicemente utilizzare la variabile 'jQuery' al posto della variabile $ nel codice.

Altri suggerimenti

Secondo Firebug, il file jQuery viene caricata:

alt text

Ma la $ viene sovrascritto da qualcos'altro:

alt text


Che cosa si dovrebbe fare è incapsulano l'uso della variabile $ con una funzione che richiama se stesso utilizzando l'oggetto jQuery in quanto è il primo argomento reale:

(function ($) {

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

}(jQuery));

È probabile che lo script non è stato inizializzato in questo modo, si dovrà utilizzare Drupal.behaviors.YOURTHEMENAME

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

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

}

};
})(jQuery);    

È possibile creare il file separato per js e di file del componente aggiuntivo js utilizzando il seguente:

drupal_add_js('path', 'module_name');

"$ non è una funzione" è un errore molto comune che si possono incontrare durante il lavoro con jQuery. Si può provare alcuna risposta su indicato di seguito:

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

o

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

In pratica questo permetterà il nostro codice per eseguire e utilizzare la scorciatoia per $ JQuery.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top