1

JSON情報を使用して動的ドロップダウンを作成しています。基本的には動作しますが、サブメニューを親に追加できません。誰でも良い提案をすることができますか?

json:

 "navigation":[
      {
         "title":"Home",
         "link":"index.html"
      },
      {
         "title":"Products",
         "link":"product.html",
         "subnav":[
            {
               "title":"Webapps",
               "link":"products/webapps.html"
            },
            {
               "title":"Mobile Apps",
               "link":"products/mobile-apps.html"
            }
         ]
      }
   ]

私の機能:

var naviHandler = function (navi) {
    var localNaviData = navi, ul = '<ul>',naviLink="";
    $.map(localNaviData, function (val,i) {
        naviLink +='<li>'
        if(val.subnav){
            naviLink += naviHandler(val.subnav)
        }else{
            naviLink +='<a href='+val.link+'>'+val.title+'</a>'
        }

    })

    naviLink +='</li></ul>';
    $('header').find('nav').append(naviLink);
    }

naviHandler(localData[obj]);
4

1 に答える 1

0

jQuery で生の HTML コードを作成する代わりに、jQuery オブジェクトを作成します。

var create_menu = function(navi) {
    var $ul = $('<ul />');

    $.map(navi, function(val, i) {
        var $li = $('<li />');

        if (val.subnav) {
            create_menu(val.subnav).appendTo($li);
        } else {
            $('<a />', {'href': val.link}).text(val.title).appendTo($li);
        }

        $li.appendTo($ul);
    });

    return $ul;
}

$('header nav').append(create_menu(localData[obj]));

あなたの問題は、関数がreturn何もしていなかったため、再帰的に使用できないことでした。

于 2012-08-12T01:11:00.350 に答える