jQuery each Почему это вычисление применяется три раза?

#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