.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');
这会将您的值设置为布尔值而不是字符串。
我有一些 <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');
这会将您的值设置为布尔值而不是字符串。