我正在创建一个待办事项列表应用程序,当用户点击他/她创建的待办事项时,我希望它删除。但是当我测试它时,它没有删除。
$(document).ready(() =>
{
$(".input input").on("keypress", check_todo);
$(".output ul li").on("click", "li", delete_todo);
})
let check_todo = (e) =>
{
if(e.keyCode == 13)
{
if($(".input input").val() == "")
{
no_todo();
}
else
{
add_todo();
}
}
}
let delete_todo = () =>
{
$(this).parent().remove();
}
let add_todo = () =>
{
let todo = $(".input input").val();
$(".output ul").append(`<li>${todo}</li>`);
$(".input input").val("");
}
let no_todo = () =>
{
alert("Please add a new todo");
}
答案 0 :(得分:2)
两处变化。
<强>首先,强>
$(".output ul li").on("click", "li", delete_todo);
应该......
$(".output").on("click", "li", delete_todo);
您需要将click
事件绑定到.output
而不是li
,因为创建该事件时li
元素尚不存在。此外,之前的代码正在寻找点击li
的{{1}}的孩子。
<强>其次,强>
.output ul li
应该......
let delete_todo = () => {
$(this).parent().remove();
}
let delete_todo = (e) => {
e.target.remove();
}
的上下文可以在click事件本身中起作用,但不会像这样从它调用函数。