0

オブジェクトをマッピングし、オブジェクトから要素を追加していますが、要素をマップしている間、オブジェクトの値をチェックして要素を適切に追加しています。私の関数ではすべて正しいと思いますが、最後の「if」条件は要素を追加するだけで、残りの条件は何も追加しません...これの修正は何ですか?

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;
                } )
            )
            : ""));
    } )
}

jsonのjsfiddleはこちら

前もって感謝します。

4

2 に答える 2

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;
} )
于 2012-08-24T07:02:27.870 に答える
0

すべてのif条件で要素を上書きしているようです。そのため、最後の条件のみがカウントされます。

于 2012-08-24T06:59:31.787 に答える