2013-09-09 5 views
6

Я пытаюсь удалить отдельные элементы из localStorage с помощью jquery. Здесь я добавляю флажки к каждому элементу в списке для удаления отмеченных элементов флажка, необходимо удалить из localStorage, но он не работает правильно.Как удалить отдельный элемент из localStorage динамически

Обновленный код:

$(document).ready(function() { 
    $("#section_list").on('click', 'a', function() { 
       var item = $(this).find('h2').text(); 
       var desc = $(this).find('p').text(); 
       var html = '<p></br><p class="description">' + desc + '</p>'; 
       $('.addToFavoritesDiv').click(function() { 
        var url = $(location).attr('href'); 
        if (!supportLocalStorage()) 
        { 
         item = 'No support'; 
        } 
        else 
        { 
         try 
          { 
           localStorage.setItem('autosave' + url, item + html); 

          } 
         catch (e) 
          { 
           if (e == QUOTA_EXCEEDED_ERR) 
           { 
            alert('Quota Exceeded'); 
           } 
          } 
        } 
       }); 
    }); 

    $('#fav').click(function() { 
     fromStorage(); 
     $("#favoritesList").listview('refresh'); 
    }); 

    $(document).on('click', '#edit', function() { 
     fromGetStorage(); 
    }); 
}); 

function supportLocalStorage() 
{  
    return typeof(Storage) !== 'undefined'; 
} 

function fromStorage() 
{ 
    $("#favoritesList").empty(); 
    $("#favoritesList").listview('refresh'); 
    for (var i = 0; i < localStorage.length; i++) { 
     var url = localStorage.key(i); 
      var item = localStorage.getItem(url); 
      $("#favoritesList").append('<li id="add"><a href="' + url + '" style="text-decoration:none;color:black">' + item + '</a></li>').attr('url', url); 
    } 
    $("#favoritesList").listview('refresh'); 
} 

function fromGetStorage() 
    { 
    $("#favoritesList").empty(); 
    $("#favoritesList").append('<input type="checkbox" name="all" id="select" />Select all</br>'); 
    $("#fav .ui-listview-filter").remove(); 
     for (var i = 0; i < localStorage.length; i++) { 
     var url = localStorage.key(i); 
     var item = localStorage.getItem(url); 
      $("#favoritesList").append('<li id="add"><div><input type="checkbox" name="check" id="check">&nbsp;<a href="' + url + '" style="text-decoration:none;color:black">' + item + '</a></div></li>').attr('url', url); 
     $("#favoritesList").listview('refresh'); 
} 

$("#select").click(function(event){ 
    event.stopPropagation(); 
}); 
    $('#select').change(function() { 
    if($("#select").is(':checked')) { 
     $("#add #check").prop("checked", true); 
     $('#empty').on('click', function() { 
      localStorage.clear(); 
     $("#favoritesList").listview('refresh'); 
     }); 
    } 
    else { 
     $("#add #check").prop("checked", false); 
    } 
}); 


$("#add #check").click(function(event){ 
    event.stopPropagation(); 
}); 

    $("#add #check").change(function() { 
     var chkLength = $('input[name="check"]:checkbox').length; 
     var chkdLength = $('input[name="check"]:checkbox:checked').length; 
     if (chkLength == chkdLength) 
     { 
      $('#select').prop('checked', true); 
      $('#empty').on('click', function() { 
       localStorage.clear(); 
       $("#favoritesList").listview('refresh'); 
      }); 
     } 
     else 
     { 
      $('#select').prop('checked', false); 
     } 
     $("#delete").on('click', function() { 
       var checked = $('#add #check:checkbox:checked'); 
        var url = localStorage.key(checked); 
        localStorage.removeItem(url); 
        $("#favoritesList").listview('refresh'); 
      $("#favoritesList").listview('refresh'); 
     }); 

}); 

} 

Заранее спасибо.

+0

Умете ли вы найти ответ на этот вопрос? У меня есть та же проблема, что и удаление определенных записей из списка избранных. –

ответ

30

Вы используете логические значения в качестве ключа? Это не сработает.

Оно должно быть:

localStorage.removeItem('keyName'); 

или

delete window.localStorage["keyName"] 
+0

Я пытаюсь удалить элементы списка из списка, которые хранятся в localstorage – Lucky

+0

Вы сохраняете объект в localstorage? Я думал, что мы можем просто сохранить строковые значения. Как просто хранить идентификаторы и удалять элементы по их идентификаторам. – Eez

+0

Да, я храню любимые страницы в localstorage. Я могу удалить все данные в localstorage, используя «localStorage.clear()», но я не могу удалить отдельные элементы. – Lucky

1

Если вы подумываете о численном ключе, вот что-то, что похоже на работу.

var elems = -1; 
var deleteElem; 

Затем цикл через локальное хранилище, чтобы найти любой элемент, который вы ищете (в данном случае, первые один):

$.each(localStorage, function(key,value){ 
    elems++; 
    // define which element to delete 
    if(elems == 0){ deleteElem = key } 
}); 

Теперь, когда у вас есть ключ вам нужно, просто удалите его с:

localStorage.removeItem(deleteElem); 
Смежные вопросы