0

私はオブジェクトを持っていますが、新しい配列へのリンクとしてラベルを含むオブジェクトを収集して保存する必要があります..これを行うための最良の方法を誰かに教えてもらえますか?

myobeject:

            var xploreMaps = {
            radious:55,
            stroke:5,strokeColor:'#fff',
            opacity:0.8,fontSize:13,line:10,
            cRtext:{
                length:4,
                lineColor:'#7d2c2c',
                prop:{
                    0:{link:'motionGraphics.html',color:'#595959',text:'Motion Graphics'},
                    1:{link:'video.html',color:'#306465',text:'Video'},
                    2:{link:'photography.html',color:'#7e6931',text:'Photography'},
                    3:{link:'copyRight.html',color:'#4c4966',text:'Copywriting'}
                    }
            },
            cBtext:{
                length:3,
                lineColor:'#4c839d',
                prop:{
                    0:{link:'imagination.html',color:'#595959',text:'Imagination'},
                    1:{link:'innovation.html',color:'#306465',text:'Innovation'},
                    2:{link:'ideation.html',color:'#7e6931',text:'Ideation'}
                    }
            },
            cGtext:{
                length:5,
                lineColor:'#579549',
                prop:{
                    0:{link:'catalogs .html',color:'#7a5967',text:'Catalogs',
                    subLink:{0:{link:'SEO_SMM.html',color:'#4e4b69',text:'SEO/SMM',align:'top'},1:{link:'site_analytics.html',color:'#545454',text:'Site analytics',align:'btm'}}},
                    1:{link:'socialmedia.html',color:'#1e9ead',text:'Innovation'},
                    2:{link:'loyalty .html',color:'#8fad34',text:'Ideation'},
                    3:{link:'promotions .html',color:'#563b64',text:'Promotions'},
                    4:{link:'implementations.html',color:'#2c6566',text:'Implementations',
                    subLink:{0:{link:'integrating.html',color:'#4c4a66',text:'Integrating',align:'top'},1:{link:'payment.html',color:'#948048',text:'Payment',align:'btm'}}}
                    }
            }
}

私が試している私の関数:

var links = []//just i need all the objects which contains the link.

        var objFinder = function (obj){
            $.each(obj,function(key,val){
                if(key == 'link' && typeof val == 'string'){
                    links.push(val)
                }else{
                    objFinder(val);//throws errors;
                }
            })
        }
        objFinder(xploreMaps);
    }
4

1 に答える 1

1

主な問題は、オブジェクトにプロパティがあることだと思いますlength。それは処理を台無しにしています。ここで作成したフィドルを参照してください。

http://jsfiddle.net/8Zfdj/

lengthプロパティをコメントアウトしたところ、正常に動作しているようです。また、欠落しているセミコロンを追加するなどのマイナーなクリーンアップも行いましたが、それが主な問題ではありませんでした。

ここでjQueryのバグ(無効)を確認できます。

http://bugs.jquery.com/ticket/7260

于 2012-11-08T17:20:04.293 に答える