Drupal 7 における jQuery
Drupal 7 では jQuery の振る舞いがちょっと Drupal 6 のそれとは異なるようで、少し手こずりました。
まず、通常 Drupal.behaviors で jQuery の全コードを囲むと思いますが、Drupal 6 では
Drupal.behaviors.module_name = function(context) {
your code goes here...
};
となっていたことと思いますが、Drupal 7 では
Drupal.behaviors.module_name = {
attache: function(context) {
your code goes here...
}
};
という風に変わります(参照:Converthing 6x modules to 7.x - Changed Drupal.behaviors ...)
また、通常 jQuery では、以下のように $(ドルサイン)を使ってコマンドを書き始めます。
$(document).ready(function() {
alert("Hello World");
};
しかし、Drupal 7 に含まれる jQuery では、この $ マークで jQuery コマンドを書き始めるということができないようです。
この問題を解決するには2通りの方法があります。1つ目は、$ の代わりに jQuery という文字列を用いるというものです。
jQuery(document).ready(function() {
alert("Hello World");
};
もう一つは、以下のように jQuery のコード全体を囲う、というものです。(参考:Converting 6.x modules to 7.x - JavaScript should be compatible with other libraries than jQuery)
(function($) {
$(document).ready(function() {
alert('Hello World.');
})
})(jQuery)
以上をまとめると、Drupal 7 向けに jQuery を使うには、以下のようにするのが基本、と言えそうです。(コメント文からした3行は任意に書き換える)
Drupal.behaviors.your_module = {
attach: function(context) {
(function($) {
// your code goes here ...
$(document).ready(function() {
alert('Hello World.');
})
})(jQuery)
}
}

Comments
Post new comment