1

以下が機能しないのはなぜですか。

(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の下に置きたいと思います。これは、最初のケースに似ています。

手がかりはありますか?ありがとう!

4

1 に答える 1

1
$('#some-div').Drupal.my_module.doStuff(); 

Drupalは有効なjQueryメソッドまたはプロパティではないため、undefinedエラーが発生します。

于 2013-03-13T15:08:21.450 に答える