我使用$ .map方法從Json獲取數據。根據數據的類型,我正在製作元素並將數據附加到容器中。它適用於所有瀏覽器,包括ie9。但少一點,即9,我根本沒有得到任何東西。jquery append - 方法問題 - 如何解決它?
我該如何解決這個問題?
我的代碼:
var processModules = function (mData) {
var lMData = mData;
$.map(lMData, function (mVal,i) {
$(mVal.type === 'form' ? '<form></form>' : '<div></div>',{
id : mVal.attributes.id,
'class' : mVal.attributes['class']
})
.appendTo(mVal.container); // not appending in less than ie9.
})
}
$(document).ready(function() {
$.getJSON('json.txt', function (data) {
if($(data['modules'])){
processModules($(data['modules']));
}
})
});
的json:
"modules":[
{
"type":"navigation",
"container":"#header",
"title":"Top Navigation",
"attributes":{
"class":"topNavigation",
"id":"topNavigation"
}
},
{
"type":"content",
"title":"Hi Welcome to mobile development",
"subtitle":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"container":"#maincontent",
"attributes":{
"class":"topContent"
}
},
{
"type":"form",
"title":"Registration Form",
"action":"submit.aspx",
"name":"registrationform",
"container":"#maincontent",
"attributes":{
"class":"registrationform"
},
"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"
}
]
您需要證明'processModules'甚至在IE <9上被調用它比'.append()'更不可能發生AJAX失敗。 – Alnitak 2012-08-13 10:59:14
旁註:爲什麼'$ .map'而不是更具描述性的'$ .each'? – Jon 2012-08-13 11:00:15
你能解釋一下嗎? – 3gwebtrain 2012-08-13 11:03:07