.prop("checked", false) 使复选框为真

.prop("checked", false) makes checkbox true

我有一些 <input value=name type=checkbox> 的值必须是持久的。所以我在 Cookies 中存储了它们每个的值,并且我编写了一个函数,该函数必须在页面准备好时恢复这些值。

保存cookies的函数是:

function setAllCookies() {
    var checkboxs = $("#divwheretheinputsare input");
    for (i in checkboxs)
        Cookies.set(checkboxs[i].value,checkboxs[i].checked);
}

恢复它们的函数是:

function readAllCookies() {
    var checkboxs = $("#divwheretheinputsare input");
    for (i in checkboxs) {
        var nom = checkboxs[i].value;
        var value = Cookies.get(nom);
        $("##divwheretheinputsare input[value='" + nom + "']").prop("checked", value);
    //Also tried $("##divwheretheinputsare input[value='" + nom + "']")[0].checked = value;
    }
}

我可以确认 Cookie 以正确的名称存储,并且两个功能已完全执行。通过调试,我检测到这一点:当 $("##divwheretheinputsare input[value='" + nom + "']").prop("checked", value) 行被执行时,复选框总是被选中,不管值是否为假。如果我在控制台中执行该行,复选框会正确更改...

此外,替代代码行在控制台中正确执行,但在它删除的函数中:"TypeError: $(...)[0] is undefined"。

正如 charlieftl 提到的,您的值是以字符串形式出现的("true" 或 "false"),而不是(真或假)和道具中的任何值("checked",value) 字段将被视为 true。

尝试:

var value = (Cookies.get(nom) == 'true');

这会将您的值设置为布尔值而不是字符串。