Estoy escribiendo mi propio módulo Drupal 7 y me gusta usar JQuery en él.
$('#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, se debe definir $.
Aunque en realidad lo incluyo en el encabezado:
<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>
¿Tengo que hacer algo más para activar JQuery en Drupal? ¿Drupal está sobrescribiendo $?
Ese es el sitio web: http://rockfinder.orgapage.de
De la guía de actualización de Drupal 7:
Javascript debe hacerse compatible con otras bibliotecas además de jQuery agregando un pequeño envoltorio alrededor de su código existente:
(function ($) { // Original JavaScript code. })(jQuery);
El $ global ya no se referirá al objeto jquery. Sin embargo, con esta construcción, la variable local $ se referirá a jquery, lo que permitirá que su código acceda a jQuery a través de $ de todos modos, mientras que el código no entrará en conflicto con otras bibliotecas que usan $ global.
También puede usar la variable 'jQuery' en lugar de la variable $ en su código.
Según Firebug, su archivo jQuery se está cargando:
Pero el $
está siendo sobrescrito por otra cosa:
Lo que debe hacer es encapsular el uso de la variable $
con una función que se invoca a sí misma usando el objeto jQuery
como su primer argumento real:
(function ($) { // in this function, you can use the $ which refers to the jQuery object }(jQuery));
Lo más probable es que su secuencia de comandos no se inicialice de esta manera, tendrá que usar Drupal.behaviors.YOURTHEMENAME
(function ($) { Drupal.behaviors.YOURTHEMENAME = { attach: function(context, settings) { /*Add your js code here*/ alert('Code'); } }; })(jQuery);