Utilizzando jQuery in Drupal 7
-
10-10-2019 - |
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
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:
Ma la $
viene sovrascritto da qualcos'altro:
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.