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

¿Fue útil?

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:

text alt

Pero el $ se sobrescribe por otra cosa:

text alt


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 $.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top