функция со счетчиком работает больше одного раза

Привет у меня есть следующая проблема у меня есть два счетчика: одно из совокупных средств (которое инициализируется в 0) и другой полных средств (который инициализируется в 24) идея состоит, в том, чтобы коснувшись click в кнопке agrege средства в тележку и счетчик средств был увеличен на один и полных decremente в одном, и потом удалив средство увеличьтесь полные и decremente тот средств. Проблема появляется, удалив средство функция выполняет количество раз статей, которые добавили пример: Если добавились 3 средства, первый click удаления будет работать однажды, второй click будет работать два раза и третий click будет работать три раза

я оставляю мой код:

let contador = 0;
                let totales = 24;
                $('#bookcount').append(contador);
                $('#bookleft').append(totales);

                 mybooks = new Array



                $('.addtocart').click(function(){
                    event.preventDefault();
                    // obtener el padre del link
                    var padre = $(this).parent().parent();
                    // obtener su id
                    var id = padre.attr('id');
                    var title = padre.data('title');
                    var idcart = $('#shoppingcart').find($(this).data("plato"))
                    /* console.log(title) */
                    if (contador == 24){
                        $('#shoppingcart').append("Ya alcanzaste el maximo de recetas")
                    } else{
                        $('#shoppingcart').append("<div class='row my-3' id='"+ id +"' data-id='"+id+"'><div class='col-6 my-auto p-0'><p>Receta</p><p>"+title+"</p></div><div class='col-1 p-0'><a class='removecart' class=' "+id+" '  href=''><img src='img/crops/trash.png' alt=''></a></div><div class='col-5 p-0'><img src='img/receta.jpg' alt='test' class='img-fluid'></div></div>");
                        $('#bookcount').empty();
                        $('#bookcount').append(contador = contador + 1);
                        $('#bookleft').empty();
                        $('#bookleft').append(totales = totales - 1);
                        mybooks.push(id);
                        console.log(mybooks)
                        console.log(contador);
                    }


                    $('.removecart').click(function(){
                        event.preventDefault();

                        contador = contador - 1;
                        totales = totales + 1;

                        $('#bookcount').empty();
                        $('#bookcount').append(contador);
                        $('#bookleft').empty();
                        $('#bookleft').append(totales);
                        console.log("contador despues",contador);
                        console.log("totales despues", totales);

                        idthis = $(this).parent().parent().attr("data-id")
                        // console.log(idthis)
                        var pos = mybooks.indexOf(idthis);
                        // console.log(pos)
                        if ( pos !== -1 ) {
                            var remove = mybooks.splice(pos,1);
                        }
                        console.log(mybooks);
                        $(this).parent().parent().remove();

                    })

                });
1
задан 06.11.2019, 22:06
1 ответ

Проблема состоит в том, что ты помещаешь событие внутри другого.

Для того, чтобы он оказался более ясным, я буду опустошать события:

$('.addtocart').click(function(){
   //Code
   $('.removecart').click(function(){
       //Code
   });
});

, поскольку каждый раз, когда ты кликаешь в кнопке "aГ±adir" то, что действительно происходит, что он эти aГ±adiendo новое событие в элементы .removecart и потом кликнув в этом botГіn выполняют все события.

, Чтобы это упорядочивать, отделяет события:

$('.addtocart').click(function(){
    //Code    
});

$('.removecart').click(function(){
    //Code
});

Уполномочивая события:

//Si ".addtocart" aun no existe
$(document).on("click", ".addtocart", function(e){
    //Code    
});

//Si ".removecart" aun no existe
$(document).on("click", ".removecart", function(e){
    //Code
});

В этом другом вопросе объясняет себе использование тем, что уполномочивает события с .on ():

не выполняет событие после того, как - элементы dinГЎmicos, ВїComo уполномочивать события?

1
ответ дан 01.12.2019, 12:28
  • 1
    моя проблема состоит в том, что кнопка, у которой есть класс .remocart, создана, сделав названный .addtocart, поместив это, как ты это предлагаешь, он совсем не работает – shape 07.11.2019, 13:57
  • 2
    @Ramiro В этом случае tendrá s, что уполномочивать событие, но не создавать это внутри другого. Я изменяю ответ для того, чтобы ты увидел пример. Я рекомендую тебе, следующий ответ видится также: не вычисляет меня час после того, как - элементы diná обезьяны – x3k_js 07.11.2019, 14:12