poreeff
@poreeff

При обновлении информации в Модальном окне — перестаёт работать JavaScript, как исправить?

CMS OpenCart. В модальное окно загружается основная информация о товаре, в котором работают кнопки Купить или добавить в избранное. Но, при нажатии на стрелку "Next" (внизу окна - слева) - кнопка Купить перестаёт работать. Хотя, добавить в избранное - по прежнему срабатывает.
То есть, при обновлении информации в модальном окне - скрипт добавления товара в корзину не работает.
Вот пример (рядом с кнопкой "Купить" - ссылка "Просмотр")

Вызов модального окна происходит ссылкой:
<a href="<?php echo $product['href']; ?>" class="c-view c-goup-product">Просмотр</a>
И скриптом:
<script type="text/javascript">
$(document).ready(function() {
$('.c-view').colorbox({
	iframe: false,
	rel: 'c-goup-product',
 });
}); 
</script>
Скрипт добавления товара в корзину:
<script type="text/javascript">
$('#button-cart').bind('click', function() {
 $.ajax({
  url: 'index.php?route=checkout/cart/add',
  type: 'post',
  data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
  dataType: 'json',
  success: function(json) {
   
   $('.success, .warning, .attention, notificationz, .error').remove();
   
   if (json['error']) {
    location = json['redirect'];
} 
   
   if (json['success']) {
    $('#notificationz').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
     
    $('.success').fadeIn('slow');
     
    $('#cart-total').html(json['total']);
    
    $('html, body').animate({ scrollTop: 0 }, 'slow'); 
   } 
  }
 });
});
</script>
Подскажите, как обновить этот скрипт - при переходе на другой товар?
(В ява скриптах не силен...)
  • Вопрос задан
  • 3016 просмотров
Решения вопроса 1
У вас скрипт не может сработать, потому что он повешан на элемент #button-cart, которого не существует, когда скрипт запускается. Если у вас jquery такая же, как и на этом сайте (1.7 и старше), то можете использовать метод .on() на элементе-родителе, который существует при запуске скрипта, а сам #button-cart указать как параметр:

$('#colorbox').on('click', '#button-cart', function() {
 $.ajax({
  url: 'index.php?route=checkout/cart/add',
  type: 'post',
  data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
  dataType: 'json',
  success: function(json) {
   
   $('.success, .warning, .attention, notificationz, .error').remove();
   
   if (json['error']) {
    location = json['redirect'];
} 
   
   if (json['success']) {
    $('#notificationz').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
     
    $('.success').fadeIn('slow');
     
    $('#cart-total').html(json['total']);
    
    $('html, body').animate({ scrollTop: 0 }, 'slow'); 
   } 
  }
 });
});


Только вставляйте это в шаблон категории, а не товара.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы