## 标记完成状态
~~~
$(function(){
function lg(a){
console.log(a);
}
function get(index){
return store.get('task_list')[index];
}
var $form_add_task = $('.add-task');
/* 删除按钮*/
var $task_delete_trigger;
var task_list = undefined;
/*详情按钮*/
var $task_detail_trigger;
var $task_detail = $('.task-detail');
/* 面纱*/
var $task_detail_mask = $('.task-detail-mask');
var current_index;
/*更新的表单*/
var $update_form;
var $task_detail_content;
/* 修改内容的隐藏输入框*/
var $task_detail_content_input;
var $checkbox_complete;
//加载默认数据
init();
$form_add_task.on('submit',on_add_task_form_submit);
/*点击面纱,隐藏详情*/
$task_detail_mask.on('click',hide_task_detail);
function on_add_task_form_submit(e){
var new_task = {};
//禁用默认行为
e.preventDefault();
/*获取新task的值*/
var $input = $(this).find('input[name=content]');
new_task.content = $input.val();
/*判空*/
if(!new_task.content) return;
console.log(new_task);
/*存入新task*/
/*var result = add_task(new_task);*/
if(add_task(new_task)){
/*aad_task方法中已经刷新过页面*/
// render_task_list();
/*添加后把input清空*/
$input.val('');
}
}
function listen_task_detail(){
$task_detail_trigger.on('click',function(){
var $this = $(this);
var $item = $this.parent().parent();
var index = $item.data('index');
lg(index);
show_task_detail(index);
});
}
/* 查看Task详情*/
function show_task_detail(index){
/*渲染详情数据*/
render_task_detail(index);
// current_index = index;
$task_detail.show();
$task_detail_mask.show();
}
/* 更新详情*/
function update_task(index,data){
if(!task_list[index]) return;
task_list[index] = data;
refresh_task_list();
}
function hide_task_detail(){
$task_detail.hide();
$task_detail_mask.hide();
}
function render_task_detail(index){
if(index ==undefined || !task_list[index]) return;
var item = task_list[index];
var tpl = '<form>'+
'<div class="content">'+
item.content+
'</div>'+
'<div><input style="display:none;" type="text" name="content" value="'+item.content+'"></div>'+
'<div>'+
'<div class="desc">'+
'<textarea name="desc">'+item.desc+'</textarea>'+
'</div>'+
'</div>'+
'<div class="remind">'+
'<input name="remind_date" type="date" value="'+item.remind_date+'"/>'+
'</div>'+
'<div><button type="submit">更新</button></div>'+
'</form>';
$task_detail.html('');
$task_detail.html(tpl);
$update_form = $task_detail.find('form');
$task_detail_content = $update_form.find('.content');
$task_detail_content_input = $update_form.find('[name=content]');
$task_detail_content.on('dblclick',function(){
$task_detail_content_input.show();
$task_detail_content.hide();
})
$update_form.on('submit',function(e){
e.preventDefault();
/*修改的data*/
var data ={};
data.content = $(this).find('[name=content]').val();
data.desc = $(this).find('[name=desc]').val();
data.remind_date = $(this).find('[name=remind_date]').val();
console.log('data',data);
update_task(index,data);
hide_task_detail();
})
}
/*删除按钮绑定监听*/
function listen_task_delete(){
/* 删除操作的监听*/
$task_delete_trigger.on('click',function(){
/* 刪除需要索引,所以先取得索引值*/
var $this = $(this);
var $item = $this.parent().parent();
var index = $item.data('index');
var tmp = confirm('确定删除吗?');
tmp ? delete_task(index):null;
});
}
function listen_checkbox_complete(){
$checkbox_complete.on('click',function(){
var $this = $(this);
// var is_complete = $this.is(':checked');
var index = $this.parent().parent().data('index');
var item = get(index);
if(item.complete){
update_task(index,{complete:false});
// $this.attr('checked',true);
}else{
update_task(index,{complete:true});
// $this.attr('checked',false);
}
});
}
/* 更新详情*/
function update_task(index,data){
if(!task_list[index]) return;
//合并对象
task_list[index] =$.extend({},task_list[index], data);
refresh_task_list();
}
/*新增task方法*/
function add_task(new_task){
/*将Task推入task_list*/
task_list.push(new_task);
/*更新localStorage*/
// store.set('task_list',task_list);
refresh_task_list();
return true;
}
/*更新task_list方法*/
function refresh_task_list(){
store.set('task_list',task_list);
render_task_list();
}
/*删除task方法*/
function delete_task(index){
/*如果没有index或者在tasklist中不存在,直接返回 */
if(!index || !task_list[index]) return;
delete task_list[index];
refresh_task_list();
}
/*初始化数据方法*/
function init(){
/*没有值就设置为空数组*/
task_list = store.get('task_list')||[];
if(task_list.length){
render_task_list();
}
lg(task_list);
}
/*把task-list渲染到页面上*/
function render_task_list(){
/*tasklist容器*/
var $task_list = $('.task-list');
$task_list.html('');
/*完成的项目放进空数组*/
var complete_items = [];
/*循环遍历tasklist*/
for(var i=0;i<task_list.length;i++){
var item = task_list[i];
if(item && item.complete){
complete_items[i]=item;
}else{
var $task = render_task_item(item,i);
}
$task_list.prepend($task);
}
/* 循环已经完成的项*/
for(var j=0;j<complete_items.length;j++){
$task = render_task_item(complete_items[j],j);
if(!$task) continue;
$task.addClass('completed');
$task_list.append($task);
}
$task_delete_trigger = $('.action.delete');
$task_detail_trigger = $('.action.detail');
listen_task_delete();
listen_task_detail();
$checkbox_complete = $('.task-list .complete[type=checkbox]');
listen_checkbox_complete();
}
/*渲染单条*/
function render_task_item(data,index){
/*判空*/
if(!data||!index) return;
var list_item_tpl =
'<div class="task-item" data-index="'+index+'">'+
'<span><input class="complete"'+(data.complete?'checked':'')+' type="checkbox"/></span>'+
'<span class="task-content">'+data.content+'</span>'+
'<span class="fr">'+
'<span class="action delete">删除</span>'+
'<span class="action detail">详细</span>'+
'</span>'+
'</div>';
return $(list_item_tpl);
}
});
~~~
**制作文字划去线**
~~~css
.task-item.completed{
color: #aaa;
background: rgab(255,255,255,0.7);
}
.task-item.completed:after{
content: "";
height: 1px;
background: #aaa;
width: 96%;
position: relative;
top: -8px;
display: block;
float: right;
}
~~~