Drupal → Однократное выполнение ajax запроса
Часто возникает необходимость, чтобы 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 года :)
Оставить комментарий