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