【发布时间】:2017-02-03 23:05:30
【问题描述】:
我有一些<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”。
【问题讨论】:
-
cookies 存储字符串,但您需要一个布尔值来表示
prop('checked', boolean)
标签: jquery checkbox checked prop