Drupal 7 - как выполнить JS только один раз при загрузке страницы

Категория: Drupal
Дата публикации: 13 мая, 2014 - 19:02
Последнее изменение: 31 октября, 2015 - 10:34

Уже несколько раз сталкивался, казалось бы, с простой проблемой, решение которое удалось найти только сейчас.

Проблема - если в теме сайта используется любой jquery-код, то он выполняется на странице после каждого ajax-запроса (самый простой пример - после открытия окна Colorbox, Lightbox или отправки ajax-формы и т.д.).
Реальный пример - нужно было добавить при помощи jquery строчку в поле ноды - и эта строчка (после открытия картинки на этой же странице в колорбоксе) дублировалась много раз.

Повторное выполнение jquery кода

Решение проблемы (использовать контекст).
В данном примере код инициализации owlCarousel привязан к блоку #product-gallery. Вместо него, разумеется, вы указываете какой-то свой блок.

(function ($){
  Drupal.behaviors.menu  = {
    attach: function (context, settings) {
      // Add context along with .once something like below.
      $("#product-gallery", context).once( function () {

  $('#product-gallery').owlCarousel({
    singleItem : true,
    slideSpeed : 1000,
    navigation: true,
    pagination:true,
    responsiveRefreshRate : 200,
  });

});
    }
  }
})(jQuery);

Используемые материалы: https://drupal.stackexchange.com/questions/130926/how-to-stop-the-jquery...

Добавить комментарий