Usando JQuery en Drupal 7
-
10-10-2019 - |
Pregunta
Estoy escribiendo mi propio módulo de Drupal 7, y al igual que el uso de jQuery en ella.
$('#field').toggle();
Pero estoy recibiendo este error:
TypeError: Property '$' of object [object DOMWindow] is not a function
Parece que jQuery no está cargado. De lo contrario, deberían definirse $.
A pesar de que en realidad lo incluye en la cabecera:
<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>
¿Tengo que hacer nada más para activar jQuery en Drupal? $ Se sobrescribe Drupal?
Esa es la página web: http://rockfinder.orgapage.de
Solución
Desde el Drupal 7 guía de actualización:
Javascript debe hacerse compatible con otras bibliotecas que jQuery la adición de un pequeño envoltorio alrededor de su código existente:
(function ($) { // Original JavaScript code. })(jQuery);
La voluntad global de $ ya no se refieren a el objeto jquery. Sin embargo, con este la construcción, la variable local $ se referirá a jQuery, lo que permite su código de acceso a través de jQuery $ de todos modos, mientras que el código no lo hará conflicto con otras bibliotecas que uso el $ mundial.
También puede simplemente utilizar la variable 'jQuery' en lugar de la variable $ en el código.
Otros consejos
De acuerdo con Firebug, se carga el archivo de jQuery:
Pero el $
se sobrescribe por otra cosa:
Lo que debe hacer es encapsulan el uso de la variable $
con una función que invoca a sí mismo mediante el objeto jQuery
como su primer argumento actual:
(function ($) {
// in this function, you can use the $ which refers to the jQuery object
}(jQuery));
Es probable que la secuencia de comandos no se ha inicializado esta manera, usted tiene que utilizar Drupal.behaviors.YOURTHEMENAME
(function ($) {
Drupal.behaviors.YOURTHEMENAME = {
attach: function(context, settings) {
/*Add your js code here*/
alert('Code');
}
};
})(jQuery);
Se puede crear el archivo separado para js y de añadir el archivo js utilizando la siguiente:
drupal_add_js('path', 'module_name');
"$ no es una función" es un error muy común que se puede enfrentar al trabajar con jQuery. Usted puede tratar de cualquier respuesta de a continuación:
(function($){
//your can write your code here with $ prefix
})(jQuery);
o
jQuery(document).ready(function($){
//Write your code here
});
Básicamente esto permitirá que nuestro código para ejecutar y utilizar el acceso directo para jQuery $.