无法使用$ .each()函数交叉检查两个变量

时间:2013-09-24 06:53:10

标签: jquery ajax json

我有一个变量'Habits',它被分配了一些默认值。当页面加载时,我使用ajax以json格式从数据库中获取值。当ajax调用成功时,我使用 $。each()函数交叉检查 Habits 变量中的值。当我在 $。each()函数中的 if 条件中给出 r.index 时它不起作用,但是当我给出<时它正在工作< strong> r.Smoking 或 r.Drinking 。请帮我解决这个问题

定义了习惯变量:

   var Habits={
    "Smoking":"No",
    "Drinking":"No"
       }

我的ajax功能

$.ajax{
    url:'getvalue',
    data:data,
    type:'POST',
    dataType:'json',
    success:function(r)
     {
        $.each(Habits,function(index, value)
        {
            if(r.index=="Yes")
        {
            $("#"+index).attr('checked=checked');
        }
        else
        {
            $("#"+index).removeAttr('checked');
        }

          }

      }
    }

json数据:

{"Smoking":"Yes","Drinking":"Yes"}

1 个答案:

答案 0 :(得分:3)

我可以看到两个问题

  1. 要设置checked属性,您需要使用.prop()而不是.attr()
  2. 由于index是包含实际密钥名称的变量,因此您需要使用bracket notation作为member operator
  3. 尝试

    $.ajax {
        url: 'getvalue',
        data: data,
        type: 'POST',
        dataType: 'json',
        success: function (r) {
            $.each(Habits, function (index, value) {
                $("#" + index).prop('checked', r[index] == "Yes");
            });
        }
    }