javascript - once - Usando JQuery en Drupal 7
libraries drupal 7 (4)
Estoy escribiendo mi propio módulo Drupal 7, y me gusta usar JQuery en él.
$(''#field'').toggle();
Pero estoy obteniendo este error:
TypeError: Property ''$'' of object [object DOMWindow] is not a function
Parece que JQuery no está cargado. De lo contrario $ debe ser definido.
Aunque en realidad lo incluyo en el encabezado:
<script type="text/javascript" src="http://rockfinder.de/misc/jquery.js?v=1.4.4"></script>
¿Debo hacer algo más para activar JQuery en Drupal? ¿Drupal sobrescribe $?
Ese es el sitio web: http://rockfinder.orgapage.de
"$ no es una función" es un error muy común que puede enfrentar al trabajar con jQuery. Puedes probar cualquier respuesta dada 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 se ejecute y use el acceso directo $ para JQuery.
Lo más probable es que su script 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);
Según Firebug, su archivo jQuery se está cargando:
Pero el $
está siendo sobreescrito por otra cosa:
Lo que debe hacer es encapsular el uso de la variable $
con una función que se invoca utilizando el objeto jQuery
ya que es el primer argumento real:
(function ($) {
// in this function, you can use the $ which refers to the jQuery object
}(jQuery));
De la guía de actualización de Drupal 7:
Javascript debe ser compatible con otras bibliotecas que jQuery agregando un pequeño contenedor alrededor de su código existente:
(function ($) { // Original JavaScript code. })(jQuery);
$ Global ya no se referirá al objeto jquery. Sin embargo, con esta construcción, la variable local $ se referirá a jquery, permitiendo que su código acceda jQuery a $ 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.