1

我有一个正在创建的自定义模块,称为接触点。在 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');
}

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

4

1 回答 1

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

于 2012-10-08T17:15:33.853 回答