Использую модуль uc_ajax_cart, темизировал его блок и сделал так, что по умолчанию в блоке видна только сводка, а по клику на слово "Корзина" всплывает попап с её содержимым, по клику на крестик или в фон, попап закрывается, всё стандартно в общем. Сперва всё работает нормально, но после того, как корзина обновляется через ajax, закрытие попапа не работает и юзер обречён либо идти на оформление заказа, либо перезагружать страницу. Т.е. добавив товар в корзину и открыв её попап, она больше не закрывается. Если же перезагрузить страницу, то всё открывается и закрывается, как в лучших домах Парижа.
Код:
'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);
Если надо, могу дать ссылку на сайт. Буду рад любой помощи. Спасибо заранее не говорю, поставлю спасибку вам на коммент только по факту.
Комментарии
Попробуй так:
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);
..ну, или давай ссылку
Не работает, что вполне логично - once нужен для того, чтобы бихэйворы не аттачились к одним и тем же элементам многократно. У меня же проблема в том, что он не аттачится вообще. Ссылка teploexpert.com
https://habrahabr.ru/post/161039/
https://www.lullabot.com/articles/understanding-javascript-behaviors-in-...
Или просто используйте делегирование событий в jquery, тогда можно вообще не использовать бихейворы друпала:
http://api.jquery.com/delegate/
Спасибо, delegate сработал. Но так и не понял, почему не работало с бихэйворами. В этом же блоке код срабатывал по открытию колорбокса, а вот по обновлению корзины не срабатывал.