После выполнения загрузки данных по ajax, может потребоваться инициализация скриптов для только что полученного куска HTML.
Как данный механизм реализован в Drupal 7?
По большому счету, требуется добавить js код в секцию success после вызова /system/ajax. Такой хук предусмотрен. Событие называется ‘ajaxSuccess’, его нужно связать с контейнером, контент которого обновляется в результате запроса.
К примеру, рассмотрим практическую задачу — зацепиться к обновлению содержимого веб-формы (модуль webform), которая настроена на использование ajax (модуль webform ajax).
Для ajax-овых форм модуль добавляет в верстку дополнительный контейнер:
1 |
div#webform-ajax-wrapper-{node->nid} |
Именно он и обновляется при отправке данных.
Зацепка реализуется добавлением хука в глобальный js объект CMS Drupal в перечень поведения (behaviors):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<script> (function($) { Drupal.behaviors.myUniqueHookName = { attach: function(context, settings) { $('#webform-ajax-wrapper-1000').bind( 'ajaxSuccess', function(data, status, xhr) { //разместите ваш код здесь console.log('Success!'); } ); } }; })(jQuery); </script> |
В моём случае код ноды с формой webform был 1000.