Оба обработчика назначены одним и тем же элементам -
.services_minus
. То есть, при клике на плюс не происходит вообще ничего, а минус - количество будет уменьшаться, и сразу же увеличиваться обратно.
Относительное расположение кнопок и элемента с количеством совсем не то, что вам кажется. Вместо того, чтобы хватать следующий элемент после кликнутой кнопки, надо от кнопки подняться до общего её и количества предка, внутри которого уже искать количество. Т.е.,
.next('.services_nomer')
следует заменить на
.closest('.services_button_block').find('.services_nomer')
Нашли элемент с количеством, достали из него текст - это всё одно выражение, т.е. результатом является строка и самого элемента с количеством у вас на руках нет, устанавливать новый текст вы пытаетесь строке. Доставать текст из элемента с количеством надо там, где у вас
parseInt
. Или можно оформить как одно выражение и поиск элемента с количеством и его обновление, передав в метод
text
функцию, которая примет текущее содержимое элемента и должна будет вернуть новое:
$('.services_minus').click(function() {
$(this)
.closest('.services_button_block')
.find('.services_nomer')
.text((i, text) => Math.max(0, text - 1));
});
$('.services_plus').click(function() {
$(this)
.closest('.services_button_block')
.find('.services_nomer')
.text((i, text) => +text + 1);
});