Gruzin Опубликовано 18 марта, 2018 Жалоба Поделиться Опубликовано 18 марта, 2018 Всем привет, если кто разбирается в jquery подскажите пожалуйста почему приведённый ниже код не работает с jquery 3.3.1 , и чудесно работает с версией 1.7.1 ? function changeColor(){var color = $('input[name=color]:checked'),arr = [];$('#colors label').removeClass('active');color.parent().addClass('active');$('#heights label').remove(); //удаляем все ростовки$.each(variants, function(id, val) {if(val['color'] == color.val() && $.inArray(val['height'], arr) < 0) {arr.push(val['height']);$('#heights').append('<label><input type="radio" name="height" value="' + val['height'] + '" />' + val['height'] + '</label>');}});if(arr.length > 1) $('#heights').show();else $('#heights').hide();$("input[name=height]:first").attr('checked', true).parent().addClass('active');changeHeight();}function changeHeight(){var height = $('input[name=height]:checked'),c = $('input[name=color]:checked').val(),arr = [];$('#heights label').removeClass('active');height.parent().addClass('active');$('#variants label').remove(); //удаляем все ростовки$.each(variants, function(id, val) {if(val['color'] == c && val['height'] == height.val() && $.inArray(val['name'], arr) < 0) {arr.push(val['name']);$('#variants').append('<label><input type="radio" name="variant" value="' + id + '" />' + val['name'] + '</label>');}});if(arr.length > 1) $('#variants').show();else $('#variants').hide();$("input[name=variant]:first").attr('checked', true).parent().addClass('active');changeVariant();}function changeVariant(){var variant = $('input[name=variant]:checked'),val = variants[variant.val()],images_ids = val['images_ids'],image_id = images_ids[0],arr = [];$('.images a').hide();if(image_id != '' && $('#image' + image_id) !== 'undefined') {$('#big_image img').attr('src', $('#image'+image_id).data('img'));$.each(images_ids, function(id, val) { $('#image' + val).show(); });}$('#variants label').removeClass('active');variant.parent().addClass('active');$('.compare_price').text(val['compare_price']);$('.price').text(val['price']);}$(function() {$('#colors input').live('change', function(){ changeColor(); });$('#heights input').live('change', function(){ changeHeight(); });$('#variants input').live('change', function(){ changeVariant(); });changeColor();}); Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 марта, 2018 Жалоба Поделиться Опубликовано 18 марта, 2018 live Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 18 марта, 2018 Автор Жалоба Поделиться Опубликовано 18 марта, 2018 liveменяю на submit , не помогает. Или что то другое надо сделать с live ? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 марта, 2018 Жалоба Поделиться Опубликовано 18 марта, 2018 Попробуйте на on поменять Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 18 марта, 2018 Автор Жалоба Поделиться Опубликовано 18 марта, 2018 (изменено) Попробуйте на on поменятьЦвета стали выбираться , а размер нет. В консоли выдаёт ошибку связанную с live Изменено 18 марта, 2018 пользователем Gruzin Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 марта, 2018 Жалоба Поделиться Опубликовано 18 марта, 2018 Значит, не все поменяли Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 15 января, 2019 Жалоба Поделиться Опубликовано 15 января, 2019 Друзья, у меня в части кода $('.prc-old').text(val['compare_price']); $('.calcitog').text(val['price']); конвертация не работает. Дело в том, что в настройках главная валюта идет $ и она скрыта, но вторая идет рубль, которая активна, т.е. товарам в админке задается цена в долл., а на сайте по умолчанию отображается в рублях.Везде хорошо работает, только на странице товара такой глюк.Блок с price-ом: <div class="podcenlist prod"> <div class="skidka"> <div class="prc-old"{if $product->variant->compare_price > 0}{else} style="display: none;"{/if}> {if $product->variant->compare_price > 0}<span><b class="clcomp">{$product->variant->compare_price|convert}</b></span>{/if}</div> </div> <div class="cenlist"> <div class="prc-new"><span><b class="calcitog">{$product->variant->price|convert}</b> {$currency->sign|escape}</span></div> </div> <button type="submit" class="but addcart i-basket" value="" data-result-text="Хочу еще">Купить</button> </div> Делаю еще так: $('.prc-old').text(val['compare_price|convert']); $('.calcitog').text(val['price|convert']); Цена конвертируется, но уже change-ер не работает. Подскажите, пожалуйста, как это исправить?Спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 15 января, 2019 Жалоба Поделиться Опубликовано 15 января, 2019 делайте Парсеинт или в литерал надо указать. так сложно сказать Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 15 января, 2019 Жалоба Поделиться Опубликовано 15 января, 2019 делайте Парсеинт или в литерал надо указать. так сложно сказатьДа, он конечно же в literal Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 15 января, 2019 Жалоба Поделиться Опубликовано 15 января, 2019 Разобрался )) нужно было дописать в скрипте "|convert" var variants = { {foreach $product->variants as $v} '{$v->id}': {literal}{{/literal}'color':'{$v->color}', 'images_ids':[{$v->images_ids}], 'height':'{$v->height}', 'name':'{$v->name}', 'price':'{$v->price|convert}', 'compare_price':'{$v->compare_price|convert}'{literal}}{/literal}, {/foreach} }; Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 19 января, 2019 Жалоба Поделиться Опубликовано 19 января, 2019 Друзья, помогите разобраться в скрипте.Добавил еще один пункт к вариантам - это RAM. Включил его везде, где можно, последний шаг - это в карточке товара скрипт, в него тоже добавил, но не пашет (( <script> var variants = { {foreach $product->variants as $v} '{$v->id}': {literal}{{/literal}'color':'{$v->color}', 'images_ids':[{$v->images_ids}], 'ram':'{$v->ram}', 'height':'{$v->height}', 'name':'{$v->name}', 'price':'{$v->price|convert}', 'compare_price':'{$v->compare_price|convert}'{literal}}{/literal}, {/foreach} }; {literal} function changeColor(){ var color = $('input[name=color]:checked'), arr = []; $('#colors label').removeClass('active'); color.parent().addClass('active'); $('#rams label').remove(); //удаляем все ростовки $('#heights label').remove(); //удаляем все ростовки $.each(variants, function(id, val) { if(val['color'] == color.val() && $.inArray(val['ram'] && $.inArray(val['height'], arr) < 0) { arr.push(val['ram']); arr.push(val['height']); $('#rams').append('<label><input type="radio" name="ram" value="' + val['ram'] + '" />' + val['ram'] + '</label>'); $('#heights').append('<label><input type="radio" name="height" value="' + val['height'] + '" />' + val['height'] + '</label>'); } }); if(arr.length > 0) $('#rams').show(); else $('#rams').hide(); if(arr.length > 0) $('#heights').show(); else $('#heights').hide(); $("input[name=ram]:first").attr('checked', true).parent().addClass('active'); changeRam(); $("input[name=height]:first").attr('checked', true).parent().addClass('active'); changeHeight(); } function changeRam(){ var ram = $('input[name=ram]:checked'), c = $('input[name=color]:checked').val(), arr = []; $('#rams label').removeClass('active'); ram.parent().addClass('active'); $('#variants label').remove(); //удаляем все ростовки $.each(variants, function(id, val) { if(val['color'] == c && val['ram'] == ram.val() && $.inArray(val['name'], arr) < 0) { arr.push(val['name']); $('#variants').append('<label><input type="radio" name="variant" value="' + id + '" />' + val['name'] + '</label>'); } }); if(arr.length > 1) $('#variants').show(); else $('#variants').hide(); $("input[name=variant]:first").attr('checked', true).parent().addClass('active'); changeVariant(); } function changeHeight(){ var height = $('input[name=height]:checked'), c = $('input[name=color]:checked').val(), arr = []; $('#heights label').removeClass('active'); height.parent().addClass('active'); $('#variants label').remove(); //удаляем все ростовки $.each(variants, function(id, val) { if(val['color'] == c && val['height'] == height.val() && $.inArray(val['name'], arr) < 0) { arr.push(val['name']); $('#variants').append('<label><input type="radio" name="variant" value="' + id + '" />' + val['name'] + '</label>'); } }); if(arr.length > 1) $('#variants').show(); else $('#variants').hide(); $("input[name=variant]:first").attr('checked', true).parent().addClass('active'); changeVariant(); } function changeVariant(){ var variant = $('input[name=variant]:checked'), val = variants[variant.val()], images_ids = val['images_ids'], image_id = images_ids[0], arr = []; $('.images a').hide(); if(image_id != '' && $('#image' + image_id) !== 'undefined') { $('#big_image img').attr('src', $('#image'+image_id).attr('rel')); $.each(images_ids, function(id, val) { $('#image' + val).show(); }); } $('#variants label').removeClass('active'); variant.parent().addClass('active'); $('.prc-old').text(val['compare_price']); $('.calcitog').text(val['price']); } $(function() { $('#colors input').live('change', function(){ changeColor(); }); $('#rams input').live('change', function(){ changeRam(); }); $('#heights input').live('change', function(){ changeHeight(); }); $('#variants input').live('change', function(){ changeVariant(); }); changeColor(); }); {/literal} </script> Вы заметите "ram". Отладчик выдает пока синтаксическую ошибку в: if(val['color'] == color.val() && $.inArray(val['ram'] && $.inArray(val['height'], arr) < 0) { Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 19 января, 2019 Жалоба Поделиться Опубликовано 19 января, 2019 Решил этот вопрос так: if(val['color'] == color.val() && $.inArray(val['ram'],val['height'], arr) < 0) { Но, к сожалению, скрипт не правильно работает ((. Changer не сортирует варианты, а выдает все, даже варианты с одинаковыми данными. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 19 января, 2019 Жалоба Поделиться Опубликовано 19 января, 2019 Решил этот вопрос так: if(val['color'] == color.val() && $.inArray(val['ram'],val['height'], arr) < 0) { Но, к сожалению, скрипт не правильно работает ((. Changer не сортирует варианты, а выдает все, даже варианты с одинаковыми данными. Не ленитесь, прочтите пару строк документации к этой функции. Сразу ведь видно, что делается чушь полная... Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 21 января, 2019 Жалоба Поделиться Опубликовано 21 января, 2019 Решил так: if(val['color'] == color.val() && $.inArray(val['ram'], arr) && $.inArray(val['height'], arr) < 0) { но это не вариант. Все равно много недочетов. Нужно решить. Кто может взяться? Напишите мне, пожалуйста. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.