Всем привет У меня появилась такая задача вывести опции в категории и сделать кнопку, при которой они будут открываться это я реализовал - через: Код: <a class="button-mono" onclick="$('.options').show();"> До кошика </a> и появилась такая проблема открывает НЕ блок с настройками где нажал кнопку а все блоки как сделать, чтобы открывало только тот блок, в котором нажал кнопку? нажмите кнопку "До кошика" и вы увидите, что открывает все опции одновременно САЙТ
Конечно, все одновременно, вы же в качестве селектора используете класс. Вы думаете, если вы это прописали на onclick в конкретном теге, то это уже ограничивает контекст только этим тегом? Выкиньте onclick вообще, и добавьте на страницу такой код: Код: $(document).on('click', '.cart-button', function(e){ e.preventDefault(); var $context = $(this).closest('.product-block'); $('.options', $context).show(); }); На ссылку "До кошика" нужно повесить класс cart-button, а на блок с товаром, на котором сейчас вообще опознавательных знаков нет, нужно повесить класс product-block.
Большое спасибо все получилось еще 1 такой нюанс когда делаю кнопку купить такой <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCartQty('<?php echo $product['product_id']; ?>', this);" class="button-mono-open" /> то не работает а когда такой, то работает. но не учитывает количество <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button-mono-open" /> хотя в категориях обычных работает а с опциями я прописываю в файле xml вот мой файл xml где не работает кнопка а вот мой файл обычной категории где работает именно через + Qty = addToCartQty перестает работать addToCart я уже не знаю, что с этим сделать (
Прежде всего смотрите консоль браузера - если что-то не работает, вероятно, там будут какие-то ошибки. И убедитесь, что у вас на странице обїявлена функция addToCartQty.
функцию addToCartQty я объявил, кнопка начала работать, но не учитывает количество возможно это из-за в обычных категориях выглядит так data 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'), в моем xml data = $('#option_'+product_id+' input[type=\'text\'], #option_'+product_id+' input[type=\'radio\']:checked, #option_'+product_id+' input[type=\'checkbox\']:checked, #option_'+product_id+' select, #option_'+product_id+' textarea'); $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: data.serialize() + '&product_id=' + product_id,
Ну, так её не просто объявить надо, а скопировать туда код, с той страницы. где всё работает, как надо. Какой у неё код внутри?
вот скрипт где работает Код: <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, information, .error').remove(); if (json['error']) { if (json['error']['option']) { for (i in json['error']['option']) { $('#option-' + i).after('<span class="error">' + json['error']['option'][i] + '</span>'); } } } if (json['success']) { $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '</div>'); $('.success').fadeIn('slow'); $('#cart-total').html(json['total']); setTimeout ("$('.success').fadeOut('slow');", 3000); } } }); }); //--></script> а тут вот где не работает - (опции учитывает, а количество нет) Код: <script type="text/javascript"> function add_bc(product_id) { data = $('#option_'+product_id+' input[type=\'text\'], #option_'+product_id+' input[type=\'radio\']:checked, #option_'+product_id+' input[type=\'checkbox\']:checked, #option_'+product_id+' select, #option_'+product_id+' textarea'); $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: data.serialize() + '&product_id=' + product_id, dataType: 'json', beforeSend: function(){ }, success: function(json) { $('.success, .warning, .attention, information, .error').remove(); if (json['error']) { if (json['error']['warning']) { $('#notification').html('<div class="warning" style="display: none;">' + json['error']['warning'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>'); $('.warning').fadeIn('slow'); } for (i in json['error']) { $('#option-' + i).after('<span class="error">' + json['error'][i] + '</span>'); } } if (json['success']) { $('#notification').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']); setTimeout ("$('.success').fadeOut('slow');", 3000); } } }); } </script>
там именно проблема здесь: Код: <operation error="skip"> <search position="replace"><![CDATA[ addToCartQty ]]></search> <add><![CDATA[ add_bc ]]></add> </operation> а там где работает Код: <search position="replace"><![CDATA[<input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" />]]></search> но, если я копирую код где работает, то не учитывает опцию и переходит на страницу товара, чтобы выбрать опциии
Советую внести правки вручную, тогда вы будете видеть, что вы делаете и как выглядит код до и после правок.