Javascript 将属性添加到复选框";勾选“;带开关

Javascript 将属性添加到复选框";勾选“;带开关,javascript,jquery,html,Javascript,Jquery,Html,我对javascript或jQuery不太熟悉。我想在复选框的值更改时实际添加和删除复选框上的checked属性,这样,如果我们获得复选框的HTML(我们存储此HTML并希望存储状态),该属性就会被包括在内。以下是我尝试过的: $(document).on('click','.mark-as-done',function() { if($(this).prop("checked")) { $(this).removeAttr('checked'); }

我对javascript或jQuery不太熟悉。我想在复选框的值更改时实际添加和删除复选框上的
checked
属性,这样,如果我们获得复选框的HTML(我们存储此HTML并希望存储状态),该属性就会被包括在内。以下是我尝试过的:

$(document).on('click','.mark-as-done',function()
{
    if($(this).prop("checked"))
    {
        $(this).removeAttr('checked');
    }
    $(this).attr('checked','checked');
});
HTML:


jQuery对具有反射属性的属性进行了特殊处理(如选中的
),因此需要直接转到DOM来执行此操作。另外,您的逻辑是始终添加属性(因为在删除属性时没有使用
else
return

但使用DOM也同样简单:

$(文档)。在(“单击“,”。标记为完成”,函数(){
//实际上添加/删除属性,使其位于序列化
//在存储表单时使用它(当
//序列化,因此我们执行属性)
如果(选中此项){
此.setAttribute(“已检查”、“已检查”);
}否则{
此。删除属性(“已检查”);
}
log(this.outerHTML);
});


但是……为什么?复选框不是自动工作的吗?在任何情况下,您是否尝试添加
else
块?(为什么要混合
.attr()
.prop()
?为什么不只是
这个。选中了
?)我想把html保存在数据库中。而且必须表现出来checked@ris你想把什么存储到DB中?这些对话框。@ris:这是问题中要包含的非常重要的信息。
<input type="checkbox" name="task" class="mark-as-done" style=" float: left;margin-top: 13px;">