选中复选框(如果 json 对象中存在)

Check checkboxes if present in json object

本文关键字:对象 存在 json 如果 复选框      更新时间:2023-09-26

我有这个json对象:

[{"id_distrib":"1"},{"id_distrib":"44"},{"id_distrib":"4"}]

我想选中这些复选框:

    <input id="1" class="cb_distrib_linux" type="checkbox" value="1">
Achlinux
<input id="2" class="cb_distrib_linux" type="checkbox" value="2">
Aurox
<input id="3" class="cb_distrib_linux" type="checkbox" value="3">
BackTrack

。 中新...

我这样做:

success: function(listes_distrib)
        {
           for(var distrib in listes_distrib)
           {
              $('#all_distrib_linux input:checkbox[value='+listes_distrib[distrib]+']').attr('checked', true);
           }
        },

我所有的复选框都被选中了。

listes_distrib[distrib] 的警报给我的是"["而不是 id。

提前感谢您的帮助。

你可以这样做:

$('#all_distrib_linux input:checkbox[value=' + listes_distrib[distrib].id_distrib +']').prop('checked', true);

您必须使用以下方法从 json 对象中获取值:

listes_distrib[0].id_distrib   // return 1
listes_distrib[1].id_distrib   // return 44
listes_distrib[2].id_distrib   // return 4

另外,使用 .prop() 而不是 .attr().prop() API Documentation中所述:

在jQuery 1.6之前.attr()方法有时采用属性值 在检索某些属性时考虑在内,这可能会导致 不一致的行为。从 jQuery 1.6 开始.prop() 方法提供了一个 显式检索属性值的方法,同时.attr()检索 属性。

尝试

success: function (listes_distrib) {
    $.each(listes_distrib, function (_, item) {
        $('#all_distrib_linux input:checkbox[value="' + item.distrib + '"]').prop('checked', true);
    })
},