使用val方法从Object设置属性

时间:2016-04-12 04:23:48

标签: jquery

我对如何正确使用val方法感到困惑。我的书说$(v).val(obj[name]);将根据属性的值设置字段的值。但是,我不清楚这意味着什么。这是我无法理解的代码。它旨在将表单的字段重新填充回其原始值。我很欣赏一步一步的解释,因为我仍然是jQuery的新手。感谢

fromObject:function(obj){
    $.each(this.find(':input'),function(i,v){
        var name = $(v).attr('name');
        if (obj[name]){
            $(v).val(obj[name]); //does this set the property as the value?
        } else {
            $(v).val('');
        }
    });
}

2 个答案:

答案 0 :(得分:2)

我认为问题在于您不熟悉用于访问对象属性的括号表示法。

假设我有一个表单数据对象,如obj = {name:"bob"}

我们通常会访问名称obj.name; // we get bob

也可以像obj['name']那样完成。当属性名称不是适当的变量名称时使用,例如

obj = { "contacts[]": ["bob","john"] }

obj['contacts[]'] // we get ["bob","john"]
obj.contacts[] // syntax error   

或者您要访问的属性名称是动态的,就像您的情况一样:您想要访问与name属性值对应的属性。我们不能在这里使用.表示法,因为我们不知道属性名称(name属性的值)将是什么。

令人困惑的代码行:$(v).val(obj[name]);是两者的混合:

首先我们将name属性的值赋给变量name 当name属性的值为“contacts []”时,$(v).val(obj[name]);相当于$(v).val(obj["contacts[]"]);,其值为$(v).val(["bob","john"]);

答案 1 :(得分:0)

<强> $(ⅴ).VAL(OBJ [名称])

设置特定DOM元素“v”的值,您也可以将值设为 $(v).val();