我对javascript或jQuery不太熟悉。我希望在其值更改时在复选框上添加和删除checked
属性,以便在我们获取复选框的HTML时包含该属性(我们存储此HTML并且需要要存储的状态)。这是我尝试过的:
$(document).on('click','.mark-as-done',function()
{
if($(this).prop("checked"))
{
$(this).removeAttr('checked');
}
$(this).attr('checked','checked');
});
HTML:
<input type="checkbox" name="task" class="mark-as-done" style=" float: left;margin-top: 13px;">
答案 0 :(得分:2)
jQuery对具有反射属性的属性(如checked
)进行了特殊处理,因此您需要直接使用DOM来执行此操作。此外,您的逻辑始终添加属性(因为您在删除时没有使用else
或return
)。
但是DOM也很容易:
$(document).on("click", ".mark-as-done", function() {
// Actually add/remove the attribute, so that it's in the serialized
// form when we store it (the `value` *property* isn't included when
// serializing, so we do the attribute)
if (this.checked) {
this.setAttribute("checked", "checked");
} else {
this.removeAttribute("checked");
}
snippet.log(this.outerHTML);
});
<input type="checkbox" class="mark-as-done">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
在Chrome,Firefox,IE9和IE11上测试。