Haciendo algunos cambios en un theme de Drupal 6 a Drupal 7, he notado que los scripts antiguos no funcionan.
Buscando mucho, he encontrado que jQuerya hora está "namespaced", por lo tanto si tenías un código parecido a este:
JAVASCRIPT:
$(document).ready(function() {
// Código
});
// Código
});
Ahora tiene que ser:
JAVASCRIPT:
(function($) {
$(document).ready(function() {
// Código
});
})(jQuery);
$(document).ready(function() {
// Código
});
})(jQuery);
Funciona y parece ser la solución final, sin embargo no se si hay otro tipo de solución. Si es asi, házmelo saber.
Actualización
Alejandro Barrio, me escribe y me sugiere que use los "behaviors" de Drupal para agregar los scripts:
Para Drupal 6
JAVASCRIPT:
Drupal.behaviors.exampleModule = function (context) {
$('.example', context).click(function () {
$(this).next('ul').toggle('show');
});
}
$('.example', context).click(function () {
$(this).next('ul').toggle('show');
});
}
Para Drupal 7
JAVASCRIPT:
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function (context, settings) {
$('.example', context).click(function () {
$(this).next('ul').toggle('show');
});
}
};
}(jQuery));
Drupal.behaviors.exampleModule = {
attach: function (context, settings) {
$('.example', context).click(function () {
$(this).next('ul').toggle('show');
});
}
};
}(jQuery));
De la misma manera Eber Irigoyen sugiere no usar document.ready
, sino:
JAVASCRIPT:
jQuery(function ($) {
// codigo, puedes usar $ sin conflictos
});
// codigo, puedes usar $ sin conflictos
});
Gracias por sus aportes 🙂
Enlace: Managing Javascript in Drupal 7
2 replies on “Usando Javascript en Drupal 7, algunos cambios”
no necesitas document ready, la forma recomendada es:
jQuery(function ($) {
// codigo, puedes usar $ sin conflictos
});
Gracias Eber por tu aporte