以下が機能しないのはなぜですか。
(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);
このエラーが発生します:TypeError:$(...)。Drupalは未定義です
関数の引数としてセレクターを渡すなどの別のアーキテクチャを使用すると、次のように機能します。
(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);
jQuery.fnオブジェクトで関数を宣言した場合にも機能します。
$.fn.doStuff = function(){...do something...}; // It works
次に、次のように呼び出します。
$('#my-div').doStuff(); // It works
しかし、私はそれをDrupal.my_moduleの下に置きたいと思います。これは、最初のケースに似ています。
手がかりはありますか?ありがとう!