Jquery 从本地存储中删除项
我正在尝试从本地存储中删除单个项。我正在使用localStorage在listview中存储选定的列表项。我附加了用于从本地存储中删除所选项目的复选框。但是当我删除选中的复选框时,它没有正确地删除,就像我选中一个复选框时,它删除的两个或三个项目是从本地存储中删除的 Html代码:Jquery 从本地存储中删除项,jquery,html,checkbox,local-storage,Jquery,Html,Checkbox,Local Storage,我正在尝试从本地存储中删除单个项。我正在使用localStorage在listview中存储选定的列表项。我附加了用于从本地存储中删除所选项目的复选框。但是当我删除选中的复选框时,它没有正确地删除,就像我选中一个复选框时,它删除的两个或三个项目是从本地存储中删除的 Html代码: <!-- Favourites page --> <div data-role="page" id="fav"> <div data-role="header" data-pos
<!-- Favourites page -->
<div data-role="page" id="fav">
<div data-role="header" data-position="fixed">
</div>
<div data-role="content" class="ulDiv">
<ul data-role="listview" data-split-icon="minus" data-split-theme="d" data-filter="true"data-icon="false" data-filter-placeholder="Search" id="favoritesList">
</ul>
</div>
<div data-role="footer" data-position="fixed" class="my-footer">
</div>
</div>
我的Js代码:
$(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"> <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);
}
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');
});
}
$(文档).ready(函数(){
$(“#节列表”)。在('click','a',function()上{
var item=$(this.find('h2').text();
var desc=$(this.find('p').text();
var html=''+desc+'
';
$('.addToFavoritesDiv')。单击(函数(){
var url=$(位置).attr('href');
如果(!supportLocalStorage())
{
项目='无支持';
}
其他的
{
尝试
{
setItem('autosave'+url,item+html);
}
捕获(e)
{
如果(e==超出配额\u错误)
{
警报(“超出配额”);
}
}
}
});
});
$('#fav')。单击(函数(){
fromStorage();
$(“#favoritesList”).listview(“刷新”);
});
$(文档)。在('单击','编辑',函数()上){
fromGetStorage();
});
});
函数supportLocalStorage()
{
返回类型(存储)!=“未定义”;
}
函数fromStorage()
{
$(“#收藏夹列表”).empty();
$(“#favoritesList”).listview(“刷新”);
for(var i=0;i').attr('url',url);
}
$(“#favoritesList”).listview(“刷新”);
}
函数fromGetStorage()
{
$(“#收藏夹列表”).empty();
$(“#收藏夹列表”).append('selectall');
$(“#fav.ui listview筛选器”).remove();
for(var i=0;i').attr('url',url);
$(“#favoritesList”).listview(“刷新”);
}
$(“#选择”)。单击(函数(事件){
event.stopPropagation();
});
$('#select')。更改(函数(){
如果($(“#选择”)。是(':选中的')){
$(“#添加#检查”).prop(“已检查”,true);
$('#empty')。在('click',function()上{
localStorage.clear();
$(“#favoritesList”).listview(“刷新”);
});
}
否则{
$(“#添加#检查”).prop(“已检查”,false);
}
});
$(“#添加#检查”)。单击(函数(事件){
event.stopPropagation();
});
$(“#添加#检查”).change(函数(){
var chkLength=$('input[name=“check”]:checkbox')。长度;
var chkdLength=$('input[name=“check”]:checkbox:checked')。长度;
if(chkLength==chkdLength)
{
$('select').prop('checked',true);
}
其他的
{
$('select').prop('checked',false);
}
});
$(“#删除”)。在('单击',函数()上{
var checked=$(“#添加#检查:复选框:选中”);
var url=localStorage.key(选中);
localStorage.removietem(url);
$(“#favoritesList”).listview(“刷新”);
});
}
尝试删除这样的项,按其键值删除本地存储项
//syntax is localStorage.removeItem('keyName');
//so if your key name is checked
localStorage.removeItem('checked');
有关本地存储的阅读,请参阅此部分。
localstorage.removietem()
无法按预期工作。我在尝试处理本地存储项时遇到了同样的问题
解决此问题的一个方法是将本地存储项设置为null
,这符合我的目的
例如,如果您有一个名为test
的本地存储项,则要清除该项,请使用:
localStorage.setItem("test", "");
虽然这可能不是正确的方法,但我在这个问题上已经发疯了,上面的一个也达到了我的目的。我认为问题出在这一部分:
$("#delete").on('click', function() {
var checked = $('#add #check:checkbox:checked');
var url = localStorage.key(checked);
localStorage.removeItem(url);
$("#favoritesList").listview('refresh');
});
您没有使用正确的密钥进行删除,因为您正在使用:
var url = localStorage.key(checked);
并且checked===[Object]==1
所以您指向的是localStorage.key(1)
为了解决这个问题,您可以使用
key=localStorage.key(some);localStorage.removietem(键)
和localStorage.removietem(一些)代码>但重要的是,您应该为每个复选框匹配“索引(第一种方式)”或“键值(第二种方式)”,如果我有完整的代码,我可以帮助您(我认为仍然有一些HTML或相关代码的部分)(如果您放一些代码也会很好)只需使用localStorage.clear()代码>您正在删除本地存储中的所有数据,我想这就是为什么…@imsiso localStorage.clear();用于删除所有项,工作正常,但问题在于localStorage.removietem();你在哪里?您设置本地存储的代码在哪里?@imsiso我更新了关于本地存储和Html的完整代码。@ken abdias software有什么帮助吗?是的,即使我已经面临这个问题很长时间了。尚未解决:(@user2384323:u是否尝试将状态设置为null?嗯,您是否发现了存在的根本问题?我没有