[Решен] Что-то у меня бихэйвор после аякса разаттачивается

Тип материала: 
Версия Drupal: 
Ключевые слова: 
Форумы: 
Пт, 05/08/2016 - 18:51

Использую модуль  uc_ajax_cart, темизировал его блок и сделал так, что по умолчанию в блоке видна только сводка, а по клику на слово "Корзина" всплывает попап с её содержимым, по клику на крестик или в фон, попап закрывается, всё стандартно в общем. Сперва всё работает нормально, но после того, как корзина обновляется через ajax, закрытие попапа не работает и юзер обречён либо идти на оформление заказа, либо перезагружать страницу. Т.е. добавив товар в корзину и открыв её попап, она больше не закрывается. Если же перезагрузить страницу, то всё открывается и закрывается, как в лучших домах Парижа.
Код:

(function ($, Drupal, window, document) {

  'use strict';

  Drupal.behaviors.my_custom_behavior = {
    attach: function (context, settings) {
$('.cart-link').click(function (e) {
        e.preventDefault();
        $('#cart-overlay').fadeIn(500);
      });
      $('#closinger, #cart-overlay', context).click(function (e) {
        if ($(e.target).closest('#cart-items').length == 0) {
          $('#cart-overlay').fadeOut(500);
        }
      });
};

})(jQuery, Drupal, this, this.document);

Если надо, могу дать ссылку на сайт. Буду рад любой помощи. Спасибо заранее не говорю, поставлю спасибку вам на коммент только по факту.

0 Спасибо

Лучший ответ


Комментарии

Аватар пользователя bumble
7 months 2 недели назад bumble #

Попробуй так:

(function ($) {
  Drupal.behaviors.my_custom_behavior = {
    attach: function (context, settings) {

      $('.cart-link').once().click(function (e) {
        e.preventDefault();
        $('#cart-overlay').fadeIn(500);
      });

      $('#closinger, #cart-overlay', context).once().click(function (e) {
        if ($(e.target).closest('#cart-items').length) {
          $('#cart-overlay').fadeOut(500);
        }
      });

    }
  };
})(jQuery);

..ну, или давай ссылку :))

1 Спасибо
Аватар пользователя gun_dose
7 months 2 недели назад gun_dose #

Не работает, что вполне логично - once нужен для того, чтобы бихэйворы не аттачились к одним и тем же элементам многократно. У меня же проблема в том, что он не аттачится вообще. Ссылка teploexpert.com

0 Спасибо
Аватар пользователя gun_dose
7 months 2 недели назад gun_dose #

Спасибо, delegate сработал. Но так и не понял, почему не работало с бихэйворами. В этом же блоке код срабатывал по открытию колорбокса, а вот по обновлению корзины не срабатывал.

0 Спасибо