2012-08-24 86 views
0

我正在映射一個對象,並追加對象的元素,而我映射的元素我檢查對象的值,並適當地附加元素。在我的函數中,我相信所有的都是正確的,但是最後的'if'條件只是附加元素,其餘條件不會附加任何東西......對此的修正是什麼?jQuery的附加問題與多個元素的條件功能

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.label) { 
         element = $('<label />',{text:val.label}); // it is not appending 
        } 
        if (val.type) { 
         element = $('<input />',{id:val.id}) // only this is appending, if i place anything after this, only the last condition appends.. any what is the issue? pls check my json tree in the jsfiddle. 
        } 
        return element; 
       }) 
      ) 
      : "")); 
    }) 
} 

jsfiddle here for json

在此先感謝。

回答

1

構成一組元素。 將你的元素推入該數組中並附加返回該數組。

改變這種

$.map(val.fields, function (val,i) { 
    var element; 
    if (val.label) { 
     element = $('<label />',{text:val.label}); 
    } 
    if (val.type) { 
     element = $('<input />',{id:val.id}) 
    } 
    return element; 
}) 

$.map(val.fields, function (val,i) { 
    var elements = []; 
    var element; 
    if (val.label) { 
     element = $('<label />',{text:val.label}); 
     elements.push(element); 
    } 
    if (val.type) { 
     element = $('<input />',{id:val.id}) 
     elements.push(element); 
    } 
    return elements; 
}) 
0

看起來好像你正在覆蓋元素在每個if條件。這就是爲什麼只有最後一個條件纔算得上。

+0

你可以給我解決了這個.. – 3gwebtrain

+0

的情況下,如果我安慰的數據,我得到所有提交的數據 – 3gwebtrain