Цепляем js-код после ajax в Drupal 7, продолжение экспериментов

Я нашел некоторые особенности того примера, что я давал вчера. Потому я решил немного ещё поэкспериментировать, чтобы дать более качественное решение.

Вот какие особенности я заметил у прошлого варианта:

  • Многократный bind кода и соответственно его многократный вызов. В некоторых случаях это не важно, но скорее всего приведет к неожиданным результатам.
  • Вторая особенность «подливает масла в котел» первой проблемы. Она заключается в том, что при одном запросе к серверу, могут быть сформированы несколько вызовов обработчика с разными контекстами.

Начну со второй проблемы — преодоления «мультиконтекста». Следует проверять в контексте какого контейнера идет вызов. Для этого можно проверить id контейнера или его класс:

Казалось бы это решает и проблему c привязкой к событию ‘ajaxSuccess’, т.е. многократный bind обработчика. Но тесты показывают, что это не так.

Вот в такой конфигурации, я отправлял данные формы webform по ajax:

В консоли раз за разом был виден инкремент зацепок к ajaxSuccess.

По моей логике, перезагружаемый контейнер должен был терять все свои «пользовательские» обработчики. Зацепка к ajaxSuccess может быть важна тем, что мы получаем доступ к передаваемым в результате ajax данным. Если это не так, что можно обойтись и без bind.

Написать комментарий

Мало букафф? Читайте есчо !

Связанные списки select с получением данных по ajax

Декабрь 15, 2016 г.

В прошлый раз я показывал как можно "на лету" создавать списки html select, данные которых содержались в специальном javascript массиве. Подготовить такой ...

Читать

Ajax в Drupal 7

Август 31, 2015 г.

Расскажу про использование техники ajax в рамках движка Drupal. Начнем с теоретических моментов. Во-первых, чтобы получить какие то данные с веб-сайта под Drupal, нужно чтобы соответствующий адрес существовал на сайте. Во-вторых, нам не хотелось бы ...

Читать

 

Комментарии к «Цепляем js-код после ajax в Drupal 7, продолжение экспериментов»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: