jQuery добавляет значение в переменную при каждом клике - PullRequest
0 голосов
/ 06 ноября 2019

Я работал над пользовательским выбором, где каждая добавленная услуга будет увеличивать стоимость при первом вводе. Тогда в той же категории он больше не будет добавляться.

https://jsfiddle.net/0mvubg2L/1/

При первом клике на сервисе категории 45, он должен добавить 100, а затем вычислить 0Но он складывает все элементы вместе, чтобы получить 300.

Затем, если вы добавите сервис из класса 44, он также добавит 100 и т. Д.

Я попытался сделатьобновите функцию

function update(param) {
    var total = 0;

    $(".search-results .results-group.ready .item, .search-results .results-group.added .item").each(function() {
        total += + param;
    });

    $(".total").text(total); 
}

, а затем сделайте щелчок, чтобы отправить его, но я не могу найти правильный метод для реализации этого.

var itemReady = $(".search-results .results-group.ready .item");

itemReady.on("click", function() {
    $(this).parent().removeClass('ready');
    $(this).parent().addClass('added');

    update('100');
});

itemAdded.on("click", function() {
    update('0');
});

1 Ответ

2 голосов
/ 06 ноября 2019

В вашей скрипке есть несколько проблем:

  1. вы суммировали все элементы, а не только .active единицы
  2. , вы можете просто передать число вместострока, и тогда вам не нужно '+' в total += + param, выглядит странно.
$(function () {

    function update(param) {
        var total = 0;

        if ($(".search-results .results-group.ready .item.active").length > 0) {
            total = param;
        }

        $(".total").text(total);
    }

    $(".search-results .results-group.ready .item").on("click", function(){
        $(this).hasClass('active') ? $(this).removeClass('active') : $(this).addClass('active');
        update(100);
    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...