我正在做一個使用jQuery的map
函數的DOM操作。使用這個我試圖將一個元素附加到一個表單。jquery我其他如果部分不工作...什麼是錯的?
它工作正常只有一次;這意味着我只在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..
}
})
)
: ""));
})
}
問題是什麼?誰能幫我?
答案涵蓋了if/else的事情,但與你應該使用'$ .each()'而不是'$ .map()'無關。 '.each()'用於迭代數組/對象的每個元素/屬性,這就是你正在做的事情。 '$ .map()'也遍歷這些項目,但它的目的是根據您對舊項目進行的某些處理來創建一個新數組。 – nnnnnn