2017-08-16 40 views
2

尽管我遇到了一个我无法修复的小错误,但在过去的几天里我一直在创建一个待办事项列表。JavaScript/Jquery事件问题

问题是......当我将“待办事项”从“当前到dos列表”移动到“已完成到dos列表”时,它们无法通过bin图标单独删除到“完成到dos”页面。

我对此很陌生,所以我的代码可能很乱,或者您可能会看到一些不好的做法。如果你注意到这一点,可以自由地说,以及我可以学习。 :)

在这里查看完整的项目! https://codepen.io/beezeecode/pen/EvmBGo

// Transfer Li from Current to completed. 
$("ul").on("click", ".move", function(){ 
    $(this).parent().remove().appendTo("#container1"); 
    $(this).parent().removeClass("move comp").addClass("appendToDo comp2 comp1"); 
    $(this, ':nth-child(2)').remove(); 
}); 

// Delete a To dos present in the COMPLETED list. 

$("#delComp").on("click", ".delSpan", function(){ 
    $(this).fadeOut(500,function(){ 
    $(this).remove(); 
    }); 
}); 

在此先感谢您的帮助!

回答

1

问题是因为当您在列表之间移动li元素时,您将它们追加到包含div而不是ul。这又意味着没有附加删除按钮上的委托事件。

为了解决这个问题修改appendTo()呼叫您的.move处理程序:

$(this).parent().remove().appendTo("#delComp"); 

Updated Codepen

+0

你的先生是个天才......太感谢你很多 – Beezee

+0

非常欢迎你:) –

0

的主要问题是,已完成待办事项不处于UL了,所以li被晃来晃去,不父像ul,所以这里使用的选择器$("ul").on("click", ".delSpan",将不会再工作,

所以修复是做的,但obs ERVE到appendTo所做的更改#container1 > #delComp

// Transfer Li from Current to completed. 
$("ul").on("click", ".move", function(){ 
    $(this).parent().remove().appendTo("#container1 > #delComp"); 
    $(this).parent().removeClass("move comp").addClass("appendToDo comp2 comp1"); 
    $(this, ':nth-child(2)').remove(); 
}); 
0

的问题是,你<li>被移动到#container1,而不是#delComp <ul>