使用JQuery从本地存储中获取的复选框id

使用JQuery从本地存储中获取的复选框id,jquery,forms,checkbox,local-storage,Jquery,Forms,Checkbox,Local Storage,我正在处理一个表单,重新加载时必须保存并显示标记的复选框, 我编写了代码,可以将其保存到本地存储中,但现在我不知道如何从本地存储中获取复选框的id,以便在重新加载页面时再次选中它们 这是一个 守则: //此代码将标记的复选框保存在本地存储器中 $('.required option')。在('click',function()上{ var fav,fav=[]; $('.required option')。每个(function(){//运行每个复选框 fav={ id:$(this.attr

我正在处理一个表单,重新加载时必须保存并显示标记的复选框, 我编写了代码,可以将其保存到本地存储中,但现在我不知道如何从本地存储中获取复选框的id,以便在重新加载页面时再次选中它们

这是一个

守则:

//此代码将标记的复选框保存在本地存储器中
$('.required option')。在('click',function()上{
var fav,fav=[];
$('.required option')。每个(function(){//运行每个复选框
fav={
id:$(this.attr('id'),
值:$(this.prop('checked'))
};
如果(fav.value==真){
fav.push(fav.id);
}
});
setItem(“复选框”,JSON.stringify(favs));
});

使用
localStorage.getItem()
获取项目,并使用
JSON.parse()
将字符串解析为页面文档就绪状态下的js对象(在本例中为数组)

$.each(JSON.parse(localStorage.getItem("checkbox")),function(i,v){
$('#'+v).attr('checked','checked'); //or as stated in the comments .prop('checked', true)
});

使用
localStorage.getItem()
获取项目,并使用
JSON.parse()
将字符串解析为页面的document ready上的js对象(在本例中为数组)

$.each(JSON.parse(localStorage.getItem("checkbox")),function(i,v){
$('#'+v).attr('checked','checked'); //or as stated in the comments .prop('checked', true)
});

实现这一点的一个简单方法是只存储复选框的
id
属性。存储未选中的项目有点多余。试试这个:

$('.required option')。在('click',function()上{
var favs=$('.必需选项:选中').map(函数(){
返回此.id;
}).get();
setItem(“复选框”,JSON.stringify(favs));
})
JSON.parse(localStorage.getItem(“复选框”)| |“[]”).forEach(函数(id){
$('#'+id).prop('checked',true);
})


实现这一点的一个简单方法是只存储复选框的
id
属性。存储未选中的项目有点多余。试试这个:

$('.required option')。在('click',function()上{
var favs=$('.必需选项:选中').map(函数(){
返回此.id;
}).get();
setItem(“复选框”,JSON.stringify(favs));
})
JSON.parse(localStorage.getItem(“复选框”)| |“[]”).forEach(函数(id){
$('#'+id).prop('checked',true);
})


您只能存储复选框的ID,在示例中,我存储了带前缀的串联选择器字符串

var elems = $('.required-option');
elems.on('click', function() {
    //Iterate checked checkboxes and store selector like #xxx
    var checkedCheckboxes = elems.filter(':checked').map(function() {
        return '#' + this.id;
    }).get().join(',');
    localStorage.setItem("checkedCheckboxes", checkedCheckboxes);
});

var checkedCheckboxesselector = localStorage.getItem("checkedCheckboxes");
if (!!checkedCheckboxesselector) {
    $(checkedCheckboxesselector).prop('checked', true);
}

您只能存储复选框的ID,在示例中,我存储了带前缀的串联选择器字符串

var elems = $('.required-option');
elems.on('click', function() {
    //Iterate checked checkboxes and store selector like #xxx
    var checkedCheckboxes = elems.filter(':checked').map(function() {
        return '#' + this.id;
    }).get().join(',');
    localStorage.setItem("checkedCheckboxes", checkedCheckboxes);
});

var checkedCheckboxesselector = localStorage.getItem("checkedCheckboxes");
if (!!checkedCheckboxesselector) {
    $(checkedCheckboxesselector).prop('checked', true);
}

最好是
.prop('checked',true)
因为
attr()
不能与复选框或RadioButtons配合使用。如果您提供声明的文档@MarcosPérezGudeRead,请参见此处:从jQuery 1.6开始,.attr()方法会为未设置的属性返回undefined。要检索和更改DOM属性,例如表单元素的选中、选中或禁用状态,请使用.prop()方法。这是一个广泛而古老的主题。如果您想在DOM树上以友好方式管理属性,则必须使用
prop()
而不是
attr()
。事实上,您可以在stackoverflow上找到大量问题,OP使用了
attr()
,但不适用于复选框或单选按钮,解决方案是更改为
prop()
。有大量的文档,所以在谷歌上搜索,不难找到。这是关于这一点的最好解释的文章:。它是西班牙语的,但你可以用谷歌翻译。它最好
.prop('checked',true)
因为
attr()
不能与复选框或radiobuttonsca一起使用。你可以在这里提供声明的文档@MarcosPérezGudeRead:从jQuery 1.6开始,.attr()方法为尚未设置的属性返回未定义的。要检索和更改DOM属性,例如表单元素的选中、选中或禁用状态,请使用.prop()方法。这是一个广泛而古老的主题。如果您想在DOM树上以友好方式管理属性,则必须使用
prop()
而不是
attr()
。事实上,您可以在stackoverflow上找到大量问题,OP使用了
attr()
,但不适用于复选框或单选按钮,解决方案是更改为
prop()
。有大量的文档,所以在谷歌上搜索,不难找到。这是关于这一点的最好解释的文章:。它是西班牙语的,但你可以用谷歌翻译。