Удаление значения из куки

339
25 декабря 2016, 21:35

Подскажите, как реализовать следующий механизм Есть ссылка, кликая по которой мы получаем у родительского блока текстовые значения у спана с классом name и price_per_unit. А дальше у куки проверить есть ли значение совпадающие с текстовом значении спана с классом name, если есть то удалить это значение из куки. Кука имеет следующую структуру

basket1:
   "["Текст","860"]"
basket2
   "["Книга","160"]"

Для работы с кукой использую след. библиотеку https://github.com/js-cookie/js-cookie

$(document).on("click",".del", function(e){
    e.preventDefault();
    var removeProduct = $(this).closest(".block").find("span.name").text();
    var removePrice = $(this).closest(".goods").find("span.price_per_unit").text();
   $(this).closest(".goods").hide();
   obj = document.cookie;
   for (var prop in obj) {
      if(obj == removeProduct) {
         obj = null;
      }
   }
});
Answer 1
var cookies = Cookies.get(); // получаем все куки (с помощью библиотеки js-cookie)
var value2remove = '["' + removeProduct + '","' + removePrice + '"]'; // собираем искомое значение в формате ["Продукт","цена"]
for (var cookie_name in cookies) { // перебираем все полученные куки
    if(cookies[cookie_name] == value2remove) // если это то самое значение - ...
        Cookies.remove(cookie_name); // удаляем куку по имени
    // если так и не удалит - раскомментить эту строчку и сверить значения,
    // т.к. я не уверен, что в полях "name" и "price_per_unit" лежат 
    // данные в корректном формате, и возможно понадобится над ними поколдовать
    //console.log(cookie_name, cookies[cookie_name], value2remove); 
}
Answer 2

Воспользуйтесь библиотекой jQuery Cookie

Подключение:

<script src="/path/to/jquery.cookie.js"></script>

Установить куку:

$.cookie('name', 'value', { expires: 7 });

Удалить куку:

$.removeCookie('name'); // => true

А по поводу корзинки, так лучше сделать массив из товаром и её уже писать в куки:

var items = [],
_cart = {};
_cart.add = function (item){
  $.each(items, function (index, cart_item){
     if (JSON.stingify(cart_item) == JSON.stringify(item)){
         items[index].qty++;
         _cart.renewCookieCart();
         return 'Item quantity has been improved';  
     }
     _cart.renewCookieCart();
     items.push(item);
     return 'Item has been added';
  });
}
_cart.remove = function (index){
    return items.splice(index, i);
}
_cart.renewCookieCart = function (){
   return $.cookie('basket', JSON.stringify(items));
}
_cart.getCart = function (){
   return JSON.parse($.cookie('basket'));
}
READ ALSO
Как осуществить перевод куска кода LESS в SCSS?

Как осуществить перевод куска кода LESS в SCSS?

Сгенерировал спрайт с помощью этого сервиса ruspritegen

424
Функция умножения float чисел

Функция умножения float чисел

Пытаюсь написать функцию с переменным числом параметров без использования доп библиотекФункция такого вида: sum(int к-во элементов,элемент1,элемент2...

387
Поиск подстроки без учёта регистра [требует правки]

Поиск подстроки без учёта регистра [требует правки]

Нужно найти подстроку, в строке wstring, без учёта регистраОС - Windows

328