jQuery 中的待办事项列表
我遵循了这个关于如何在 jQuery 中创建待办事项列表的优秀教程:
http://www.youtube.com/watch?v=SkmF8eUOUrE
我通过删除添加和删除任务的能力稍微调整了它(因此简化了它)。相反,该列表将由数据库填充并经常更新。用户将能够查看此任务列表并勾选他们已完成的任务。因此,每个用户都有相同的任务列表,但他们都可以在该任务列表上检查自己的个人进度。
问题
缺少的部分是让浏览器记住用户完成了哪些任务。当用户勾选列表中的某个项目并刷新页面时,列表会刷新,完成的任务会被遗忘。
问题
解决此问题的最佳方法是什么?我正在考虑使用 cookie,但我是否需要为每项任务使用不同的 cookie?待办事项列表会定期更新,因此理论上我们可能需要创建数千个 cookie。这可以吗还是有更好的方法?
这是我的 jQuery:
function completeItem(){
if( jQuery(this).parent().css('textDecoration') == 'line-through' ){
jQuery(this).parent().css('textDecoration', 'none').removeClass('due-linethrough');
}else{
jQuery(this).parent().css('textDecoration', 'line-through').addClass('due-linethrough');
}
}
jQuery(function() {
jQuery(document).on('click', '.complete', completeItem);
});
这是html
<ul id="noticeboard-list">
<li><label class="checkbox"><input type="checkbox" class="complete">Do task 1</label></li>
<li><label class="checkbox"><input type="checkbox" class="complete">Do task 2</label></li>
<li><label class="checkbox"><input type="checkbox" class="complete">Do task 3</label></li>
</ul>
非常感谢您的帮助!
凯蒂
编辑以下建议以使用来自 kri5t 的 jstorage
我尝试使用 jstorage 而不是 cookie。下面显示了我的新代码:
jQuery
function completeItem(){
taskID=jQuery(this).attr('id');
if( jQuery(this).parent().css('textDecoration') == 'line-through' ){
jQuery(this).parent().css('textDecoration', 'none').removeClass('due-linethrough');
jQuery.jStorage.set(taskID, 'done');
}else{
jQuery(this).parent().css('textDecoration', 'line-through').addClass('due-linethrough');
jQuery.jStorage.deleteKey(taskID);
}
}
HTML
<ul id="noticeboard-list">
<li><label class="checkbox"><input type="checkbox" class="complete" id="HPtask1">Do task 1</label></li>
<li><label class="checkbox"><input type="checkbox" class="complete" id="HPtask2">Do task 2</label></li>
<li><label class="checkbox"><input type="checkbox" class="complete" id="HPtask3">Do task 3</label></li>
</ul>
当用户勾选复选框时,taskID 设置为“完成”。当他们取消勾选它时,它会被删除。但是,我如何使用这些信息为所有在 jstorage(例如 HPtask1)中具有与匹配 ID(例如 HPtask1)对应的键值“完成”的复选框的文本装饰设置为直通?(希望这是有道理的!)。
再次感谢 :D