我对如何正确使用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('');
}
});
}
答案 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();