Drupal 7: Drupal.behaviors не работает

У меня есть пользовательский модуль, который я создаю, называемый Touchpoint. В верхней части файла 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. Однако этот код не выполняется. Просто чтобы быть уверенным, что я также включил предупреждение в функцию, и она не сработала. Есть ли шаг, который я пропускаю?

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

Другие вопросы по тегам