Длинная версия : Drupal.behaviors - это не просто замена jQuery.ready, так как последний запускается только один раз (когда DOM готов к манипуляции): поведение может запускаться несколько раз во время выполнения страницы и может запускаться всякий раз, когда новые элементы DOM вставляются в документ.
Кроме того, модули могут переопределять или расширять существующее поведение (например, если один модуль имеет поведение добавления эффекта отскока для всех ссылок, второй модуль может заменить поведение другим эффектом отказов).
Короткая версия : она более модульная, хотя документация может быть улучшена.
Кроме того, начиная с Drupal 7, настройки, определенные с помощью drupal_add_js (PHP) или Drupal.settings.modulename (Javascript), напрямую передаются в качестве второго параметра (первый из которых является контекст) к поведению.
Например:
Drupal.behaviors.changeLinks = function(context, settings){
if (!settings) settings = Drupal.settings.changeLinks;
$("a", context).hover(function() {
$(this).css('color', settings.color);
});
};
И если один из ваших сценариев (или другой) создает новые узлы, он все равно может применить поведение к новым узлам, не зная, какие другие модули установлены:
var newNodes = $('<a href="#">Hello</a> <a href="#">World</a>').appendTo('#someDiv');
Drupal.attachBehaviors(newNodes);