Por que o seguinte não está funcionando:
(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);
Eu recebo este erro: TypeError: $ (...). Drupal é indefinido
Se eu usar outra arquitetura como passar o seletor como um argumento para a função que funciona:
(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);
Também funciona se eu declarar a função no objeto jQuery.fn:
$.fn.doStuff = function(){...do something...}; // It works
Então ligue como:
$("#my-div").doStuff(); // It works
Mas eu quero colocá-lo em Drupal.my_module, algo mais parecido com o primeiro caso.
Alguma pista? Obrigado!
Respostas:
1 para resposta № 1$("#some-div").Drupal.my_module.doStuff();
Drupal
não é um método ou propriedade jQuery válido, daí undefined
erro.