Часто возникает необходимость, чтобы ajax ссылка с классом use-ajax
выполнила запрос ровно один раз, после чего прекратила реакцию на клики (например это ссылка загрузки контента в таб). Реализовать задуманное можно с помощью небольшого костыля подменяющего Drupal.Ajax.prototype.eventResponse
:
(function ($, Drupal) {
/**
* Override AJAX eventResponse function.
*/
var originalAjaxEventResponse = Drupal.Ajax.prototype.eventResponse;
Drupal.Ajax.prototype.eventResponse = function (element, event) {
var $element = $(element);
if ($element.hasClass('use-ajax-once')) {
if ($element.data('ajax-done')) {
this.ajaxing = true;
}
else {
$element.data('ajax-done', true);
}
}
originalAjaxEventResponse.apply(this, arguments);
};
})(jQuery, Drupal);
Использование — подключить js файл на страницу, добавить ссылке помимо класса use-ajax
класс use-ajax-once
.
P.S: запрос на добавления подобного функционала в ядро лежит с 2010 года :)
Написанное актуально для
Drupal 8+
Похожие записи
- Динамический url ajax-ссылок
- Отключить автоматический аплоад файлов у определённого поля
- Восстанавливаем позицию текстового курсора при ajax обновлении формы
- Как выполнять свой js-код до или после любых AJAX запросов (изменение работы AJAX API)
- Добавляем возможность указывать тип прогрессбара для ajax ссылок
Добавить комментарий