Ок, если вам не интересно просто подумать, то примерно так:
function recountItem(el_summ, el_quantity, n_price, e) {
action = e ? e.target.className.match(/\w+_+(\w+)/)[1] : '';
n_quantity = parseInt(el_quantity.text());
switch(action){
case 'plus':
case 'increment':
n_quantity ++;
break;
case 'minus':
case 'decrement':
n_quantity = n_quantity > 1 ? n_quantity - 1 : n_quantity;
break;
}
el_quantity.text(n_quantity);
el_summ.text(n_quantity * n_price + ' грн.');
};
//order
$('.order__block').each(function() {
var $e = $(this),
el_quantity = $e.find('.order__value'),
el_summ = $e.find('.order__sum'),
n_price = $e.find('.order__value').attr('data-number');
$e.find('.order__plus').click(function(e) {
recountItem(el_summ, el_quantity, n_price, e)
});
$e.find('.order__minus').click(function(e) {
recountItem(el_summ, el_quantity, n_price, e)
});
recountItem(el_summ, el_quantity, n_price);
});
//single
$('.single__row').each(function() {
var $e = $(this),
el_quantity = $e.find('.single__count'),
el_summ = $e.find('.single__price'),
n_price = $e.find('.single__count').attr('data-price');
$e.find('.single__increment').click(function(e) {
recountItem(el_summ, el_quantity, n_price, e)
});
$e.find('.single__decrement').click(function(e) {
recountItem(el_summ, el_quantity, n_price, e)
});
recountItem(el_summ, el_quantity, n_price);
});
//basket
$('.basket__item').each(function() {
var $e = $(this),
el_quantity = $e.find('.basket__value> span'),
el_summ = $e.find('.basket__sum'),
n_price = $e.find('.basket__single').text();
$e.find('.single__increment').click(function(e) {
recountItem(el_summ, el_quantity, n_price, e);
updateBasketTotalSum();
});
$e.find('.single__decrement').click(function(e) {
recountItem(el_summ, el_quantity, n_price, e);
updateBasketTotalSum();
});
recountItem(el_summ, el_quantity, n_price);
updateBasketTotalSum();
});
function updateBasketTotalSum() {
var sum = 0;
$('.basket__sum').each(function() {
sum += parseInt($(this).text());
});
$('.basket__count').text(sum + ' грн.');
}
$('.basket__close').on('click', function() {
$(this).parent().parent().remove();
});
если нигде в синтаксисе не ошибся, то должно работать вроде как.
PS: все повторяющиеся действия вынесены в
ОДНУ функцию, тем более что у вас во все функции передавались ссылки на html элементы и действия абсолютно одинаковые. А action определяется по className элемента, который берется из event'а
PPS: только какой профит с готового решения??