我有一个应用程序,它读取存储在localStorage中的项目,并在页面“加载”时将其显示在<li />
中。
列表视图包含一个拆分按钮,按下该按钮可从列表中删除相关项目;这是我的目标的一部分,在互联网上环顾四周,我试图找到一种方式,所以这个“删除/删除”功能也从localStorage中删除<li />
内的选定项目,但对于一些我的下面的脚本似乎删除随机项目的原因。
$(document).ready(function () {
window.addEventListener('load', OnStorage, false);
});
function OnStorage(event) {
if (window.localStorage) {
var key, value;
// loop through local storage
for (var i = 0; i < localStorage.length; i++) {
// retrieve the key
key = localStorage.key(i);
// set the field from the key
value = localStorage.getItem(key);
$("#medListDiv").show();
var text = '<a href="#"><h2>' + value + '</h2>' + '<a href="#" class="del">Delete</a></a>';
$('<li />', {
html: text
}).appendTo('ul.medList');
}
$('ul.medList').listview('refresh')
}
}
//Deletes items from the medicine List
$('ul').on('click', '.del', function (el) {
$(this).closest('li').remove();
localStorage.removeItem(key); //Where problem relies
$('ul.medList').listview('refresh');
});
我认为它与key
是错误的有关,但无法解决使脚本从所选项目中获取正确密钥的方法。或者,如果有办法通过单独取值来删除项目? (怀疑它,因为我找到的只能通过操纵键来完成。)
请提出任何建议。
答案 0 :(得分:2)
将您的密钥存储在锚标记的属性
中 var text = '<a href="#"><h2>' + value + '</h2>' + '<a href="#" key="'+key+'" class="del">Delete</a></a>';
$('<li />', {
html: text
}).appendTo('ul.medList');
并在点击事件中引用该属性
$('ul').on('click', '.del', function (el) {
$(this).closest('li').remove();
var key = $(this).attr('key');
localStorage.removeItem(key); //Where problem relies
$('ul.medList').listview('refresh');
});
希望这可以解决您的问题。
答案 1 :(得分:1)
你应该获得关键值,你在ui上执行click事件。 让我们说每个李都像
<li data='key'>....</li>
//键入localstorage中键的名称 当点击功能时你可以得到像
这样的关键值var key = $(this).closest().attr("data");
localStorage.removeItem(key);