Вы должны понимать, что drupal.behaviors срабатывает при загрузке страницы и , когда ajax возвращает результаты. Он спроектирован таким образом, потому что вы можете захотеть, чтобы ваш код снова запускался на результатах ajax, например, если вы обновляете часть страницы с помощью ajax, и для этого требуются обработчики событий или добавлен класс.
Переменная context
является ключом здесь.
при первой загрузке страницы контекстом будет все окно, но когда ajax возвращает результат, контекст будет просто тем, что возвращает ajax.
Зная это, вы должны использовать context
в ваших селекторах jquery.
например.
(function($) {
Drupal.behaviors.myHelpText = {
attach: function (context, settings) {
//code starts
//change placeholder text
$('.form-item-quantity', context).append('<span class="help-block">For orders over 10 call for volume pricing</span>');
$('.help-block', context).css("flex-basis", "100%");
//code ends
}
};
})(jQuery);
Для дополнительной защиты от обработки чего-либо несколько раз вы можете использовать jquery один раз (), но это обычно не требуется, если в селекторе используется переменная контекста. jQuery Once () отдельная библиотека, которая должна быть загружена.