【问题标题】:Check checkboxes if present in json object检查复选框是否存在于 json 对象中
【发布时间】:2013-11-07 15:16:33
【问题描述】:

我有这个 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

... CenOS
...

我这样做:

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。

提前感谢您的帮助。

【问题讨论】:

  • 您必须选择listes_distrib[distrib]id_distrib属性。
  • 为什么不赞成这个?这当然是一个足够有效的问题,并且个人正在认真尝试解决它。也许是某个讨厌迪斯科的人干的?

标签: javascript jquery json checkbox


【解决方案1】:

你可以这样做:

$('#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() 检索 属性。

【讨论】:

    【解决方案2】:

    试试

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

    【讨论】:

    • 感谢您的回复。
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2013-12-23
    相关资源
    最近更新 更多