Drupal 7:Drupal.behaviors没有运行

时间:2012-10-08 15:01:59

标签: drupal-7 drupal-modules drupal-behaviors

我有一个我正在创建的自定义模块称为接触点。在touchpoints.module文件的顶部,我有以下内容:

global $base_path;

$my_settings = array(
  'basepath' => $base_path,
  'module_path' => drupal_get_path('module','touchpoints')
 );

drupal_add_js(array('touchpoints' => $my_settings), 'setting');
drupal_add_js(drupal_get_path('module','touchpoints') . '/touchpoints.js');

然后在我的touchpoints.js文件中,我有以下内容:

Drupal.behaviors.touchpoints = function(context){
    $('.form-item-touchpointlocation').css('display','block');
    $('.form-item-touchpointcategory').css('display','none');
}

我的理解是,当DOM完成类似于$(document).ready调用的加载时,Drupal.behaviors调用内的任何内容都应该运行。但是,此代码未被执行。只是为了确保我在函数中也发出警报,并且它没有被触发。我缺少一步吗?

1 个答案:

答案 0 :(得分:1)

我意识到我正在使用Drupal 6语法。在Drupal 7中,你必须以不同的方式声明行为。应该看起来像这样

(function ($) {
    Drupal.behaviors.touchpoints = {
        attach: function (context, settings) {
          $('.form-item-touchpointlocation').css('display','block');
          $('.form-item-touchpointcategory').css('display','none');
        }
    };
})(jQuery);

参考:http://drupal.org/node/756722