2016-03-29 2 views
0

Я пытаюсь удалить определенное значение из файла cookie при событии клика. Мой код sofar:

  $("a.js-delete-hotel").on("click", function (e) { 
      e.preventDefault();     

      deleteHotelId = $(this).attr("id"); 

       hotelIdsArray = $.cookie('hotel-comparison').split(/,/); 

       if($.inArray(deleteHotelId, $.cookie('hotel-comparison').split(/,/))){ 
        for(var i = hotelIdsArray.length-1; i--;){ 
          if (hotelIdsArray[i] === deleteHotelId) hotelIdsArray.splice(i, 1); 
        } 
       } 

       $.cookie('hotel-comparison', hotelIdsArray); 
     }); 

Этот код не работает. Он создает еще один файл cookie с тем же именем и значением.

ответ

1

inArray() возвращает -1, если элемент не найден в массиве

$("a.js-delete-hotel").on("click", function(e) { 
    e.preventDefault(); 

    var deleteHotelId = $(this).attr("id"); 

    var hotelIdsArray = $.cookie('hotel-comparison').split(/,/), 
    idx = $.inArray(deleteHotelId, hotelIdsArray); 

    if (idx > -1) { 
    hotelIdsArray.splice(idx, 1); 
    } 

    $.cookie('hotel-comparison', hotelIdsArray.join()); 
}); 
+0

https://jsfiddle.net/arunpjohny/sLhu7vv9/ –

0

Использование удалить куки

$.removeCookie('hotel-comparison'); 
+0

$ .removeCookie удалит файл cookie. Мне нужно удалить только некоторые значения в файле cookie. – Roman

+1

вы удаляете файл cookie и создаете новый с измененным значением – madalinivascu

+0

Итак, сначала нужно удалить файл cookie, а затем новый, созданный с новыми значениями. Мне просто интересно, есть ли другой способ сделать это без необходимости удаления cookie. – Roman

0

Вы хотите обновить печенье с новой ID-массив значений, когда один идентификатор удаляется?

Вы должны просто написать cookie снова с новым значением, как вы это делаете в конце.

Возможно, это проблема с удалением идентификатора из массива? Вы отлаживали и проверяли, что идентификатор удаляется до того, как файл cookie будет написан снова?

Что касается удаления элементов в массиве, может быть, посмотрите на это: https://stackoverflow.com/a/3596096/2028628

Кроме того, эта строка:

if($.inArray(deleteHotelId, $.cookie('hotel-comparison').split(/,/))){ 

Может быть изменен (как вы установите значение hotelIdsArray в строке выше)

if($.inArray(deleteHotelId, hotelIdsArray)){