Это я пример привел, и это условная запись (тернарный оператор), более лаконичная запись if ... else ... Если в вашем случае ее использовать, то это так:
productsArr[sbId] ? (
$('span[data-sb-id-button="'+sbId+'"]').text('Добавить в корзину'),
$(this).addClass('button-active')
) : (
$('span[data-sb-id-button="'+sbId+'"]').text('Удалить в корзину'),
$(this).removeClass('button-active')
)
То есть "читабельность" такого кода не очень. А значит:
if(productsArr[sbId]) {
$('span[data-sb-id-button="'+sbId+'"]').text('Добавить в корзину');
$(this).addClass('button-active');
} else {
$('span[data-sb-id-button="'+sbId+'"]').text('Удалить в корзину');
$(this).removeClass('button-active');
}
Вот только не понять странность в $(this). Если это кнопка, а span ее текст, то зачем же такие извращения. Если дочерних span у элемента не один, то все равно все можно описать цепочкой, а значит вполне можно обойтись и "читабельным" тернарным оператором:
productsArr[sbId] ? $(this).addClass('button-active').find('span[data-sb-id-button]').text('Удалить в корзину') : $(this).removeClass('button-active').find('span[data-sb-id-button]').text('Добавить в корзину');
А лимит на количество нет смысла проверять в данном случае. Ведь если к примеру лимит 3, то кнопка должна быть красной и при одном товаре в корзине, ибо его то можно уже удалять из нее, и при двух, и при трех.
PS. Какая-то путаница с текстом на кнопке, на мой взгляд, в условиях.
|