#jquery
#jquery
Вопрос:
Я перебираю теги span с ценой и применяю к цене формулу * 2 или / 2. Каким-то образом этот цикл применяет формулу 3 раза вместо 1 раза.
$("input[name=service_amount]:radio").change(function() {
calcPrice(this);
});
function calcPrice(context) {
$.each($('.order_details_small_text'), function(index, value) {
var price = parseFloat(this.innerHTML.replace(/[^0-9.] /g, ""));
var newPrice = ($(context).val() == "0" ? price / 2 : price * 2);
$(this).html('€(' newPrice ')');
});
}
ДА. У меня есть три пролета с классом «order_details_small_text». Но все же он должен проходить через промежутки и применять новую цену на основе контекста $ (this) только один раз, верно?
Но вместо 40 -> 20 и 20 => 10 я получаю 40 -> 5 и 20 -> 2.5.
Комментарии:
1. Может быть, я не понимаю вопроса. … сколько переключателей вы вызвали
service_amount
?2. Два переключателя. Это переключение между полным обслуживанием или половинным обслуживанием. Таким образом, половина цены остается за половину услуги. Итак, если выбрано значение переключателя 0, цена должна быть вдвое меньше. Иначе удвойте цену.
3. Попробуйте использовать
$(value)
вместо этого, если$(this)
4. Для
change
переключателя, с которого вы переходите, тоже сработает. Это не объясняет, почему их три, но попробуйте проверитьif (this.checked)
перед вызовомcalcPrice
. Я бы также рекомендовал вам просто сохранить исходную цену вdata-price
атрибуте.5. Кажется, работает. jsfiddle.net/isherwood/kUTa7