Drupal のスペシャリストではありませんが、このブログ エントリ$(document).ready()
は、Drupal 6 の時点で、jQuery コードに関数を含める必要がまったくないことを示唆しています。
代わりに、 のプロパティとして割り当てる関数内にすべてのコードを配置できますDrupal.behaviors
。
Drupal インストールのmisc/ directory
には、jquery.js ファイルだけでなく、drupal.js (および特定のページまたは管理機能 (upload.js など) に固有の機能を制御する他のいくつかの js ファイル) もあります。 Drupal での jQuery の使用。
他の js ファイルからアクセスして使用する必要があるプロパティを含める目的で、Drupal JavaScript オブジェクトを宣言します。たとえば、Drupal.settings プロパティは、モジュール設定の配列をそのモジュールの js コードに渡すために使用されます。これを行うには、php コードで drupal_add_js() を呼び出し、2 番目のパラメーターが「設定」として渡されていることを確認します。次に例を示します。
drupal_add_js(array('mymodule' => $array_of_settings), 'setting');
js ファイルでは、Drupal.settings.mymodule でこれらの設定にアクセスできます。このようにして、Drupal.settings オブジェクトを mymodule プロパティで拡張しました。これは、それ自体がすべての設定を含むオブジェクトです。
Drupal オブジェクトのもう 1 つのプロパティは、動作オブジェクト、つまりDrupal.behaviors
です。モジュールに新しい jQuery 動作を追加する場合は、このオブジェクトを拡張するだけです。モジュールの jQuery コード全体は、次のように構成できます。
Drupal.behaviors.myModuleBehavior = function (context)
{
//do some fancy stuff
};
しかし、関数を宣言するだけで、どのように呼び出されるのでしょうか? まあ、それはすべて drupal.js で処理されます。$(document).ready
関数を呼び出す関数があり、その関数は、そのプロパティのすべてを呼び出すオブジェクトをDrupal.attachBehaviors
順番に循環しDrupal.behaviors
ます。これらはすべて、上記のようにさまざまなモジュールによって宣言された関数であり、ドキュメントを context として渡します。
このようにする理由は、jQuery コードが新しい DOM 要素をページに追加する AJAX 呼び出しを行う場合、その新しいコンテンツに動作 (たとえば、すべての h3 要素を非表示にするなど) を次のように関連付けたい場合があるためです。良い。しかし、DOM が読み込まれてDrupal.attachBehaviors
実行されたときには存在しなかったため、動作は関連付けられていません。ただし、上記の設定では、 を呼び出すだけで済みますDrupal.behaviors.myModuleBehavior(newcontext)
。ここnewcontext
で、新しい AJAX 配信のコンテンツを呼び出します。これにより、ビヘイビアーがドキュメント全体に何度も関連付けられないようにすることができます。このコードの使用方法の完全な例については、こちらを参照してください