我正在使用 jQuery 的map
函数进行 DOM 操作。使用这个我试图将一个元素附加到一个表单中。
它只能正常工作一次;这意味着我只在if
部分中获得结果,我无法从该else if
部分中获得任何价值。我的功能有什么问题,或者我的方法有什么问题?
我的数据:
"fields":[
{
"id":"firstname",
"label":"First Name",
"name":"fname",
"type":"text",
"value":""
},
{
"id":"email",
"label":"Email",
"name":"email",
"type":"text",
"value":""
},
{
"id":"countries",
"label":"Country",
"name":"countries",
"type":"select",
"options":[
{
"value":"",
"text":"Select Country"
},
{
"value":"in",
"text":"India",
"selected":"true"
},
{
"value":"us",
"text":"United Stated"
},
{
"value":"uk",
"text":"United Kingdom"
},
{
"value":"cn",
"text":"Canada"
}
]
},
{
"id":"submit",
"name":"submit",
"type":"submit",
"value":"Submit"
}
]
我的功能:
var processModules = function (mData) {
$.map(mData, function (val,i) {
$(val.container).append(
$(val.type === 'content' || val.type === 'navigation' ?
$('<div />',{
'class':val.attributes['class'],
id:val.attributes.id})
.append(val.title ? $('<h2 />',{text:val.title}) : "")
.append(val.subtitle ? $('<h3>',{text:val.subtitle}) : "")
:
val.type === 'form' ? $('<form />',{
id:val.attributes.id,
'class':val.attributes['class'],
action:val.action,
name:val.name
})
.append($('<legend />',{text:val.title}))
.append(
$.map(val.fields, function (val,i) {
var element;
if(val.id) {
console.log(val.id); // getting values and appending elements
}
if (val.label) {
element = $('<label />',{text:val.label}); // am not getting any value here..
}
if (val.type) {
element = $('<input />',{id:val.id}) // I am only getting value here..
}
} )
)
: ""));
} )
}
问题是什么?谁能帮我?