问题是线路
if ($("span.checkmark").is(".done")) {
它检查第一个
checkmark
元素具有类
done
,您需要检查当前是否已单击
复选标记
有这个班
完成
所以
if ($(this).is(".done")) {
//or if ($(this).hasClass("done")) {
您在添加单击处理程序时遇到了另一个问题,您正在将单击处理程序添加到另一个单击处理程序(添加按钮)中,这也可能导致问题。
您这样做的原因可能是为了处理动态元素,但解决方案是使用
event delegation
,因此不是在
$("#item").on("keypress", function(e) {
处理程序尝试在dom就绪处理程序中添加以下内容
$('.list').on("click", '.checkmark', function () {
// alert($(this));
var isDone = $(this).hasClass("done");
$(this).attr('data-icon', isDone ? '\ue600' : '\ue603').toggleClass("notdone", isDone).toggleClass("done", !isDone)
$(this).next().toggleClass("grayedout", !isDone)
});
$('.list').on("click", '.delete', function () {
// alert("delete me!");
$(this).closest("li").remove();
});