Pourquoi ce qui suit ne fonctionne pas:
(function($){
Drupal.my_module = {};
Drupal.behaviors.my_module = {
attach: function(context, settings) {
$("#some-div").Drupal.my_module.doStuff();
}
};
Drupal.my_module.doStuff = function(){
this.append("Hello World");
}
})(jQuery);
Je reçois cette erreur: TypeError: $ (...). Drupal n'est pas défini
Si j'utilise une autre architecture comme passer le sélecteur comme argument de la fonction, cela fonctionne:
(function($){
Drupal.my_module = {};
Drupal.behaviors.my_module = {
attach: function(context, settings) {
Drupal.my_module.doStuff($("#some-div"));
}
};
Drupal.my_module.doStuff = function(elem){
elem.append("Hello World");
}
})(jQuery);
Cela fonctionne aussi si je déclare la fonction dans l'objet jQuery.fn:
$.fn.doStuff = function(){...do something...}; // It works
Alors appelez ça comme:
$("#my-div").doStuff(); // It works
Mais je veux le mettre sous Drupal.my_module, quelque chose qui ressemble davantage au premier cas.
Des indices? Merci!
Réponses:
1 pour la réponse № 1$("#some-div").Drupal.my_module.doStuff();
Drupal
n’est pas une méthode ou une propriété jQuery valide, d’où le undefined
Erreur.