Показать сообщение отдельно
  #9 (permalink)  
Старый 05.11.2019, 15:17
Интересующийся
Отправить личное сообщение для sty-wolf Посмотреть профиль Найти все сообщения от sty-wolf
 
Регистрация: 30.10.2019
Сообщений: 19

Сообщение от laimas Посмотреть сообщение
Это я пример привел, и это условная запись (тернарный оператор), более лаконичная запись 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. Какая-то путаница с текстом на кнопке, на мой взгляд, в условиях.
да цепочкой намного красивее, путаницу исправил, ну все равно, после обновления страницы сбрасываются цвет и текст кнопки.... может как то в куки записывать эти данные или в локальное хранилище?
Ответить с цитированием