私が作業しているサイトにメニューを追加するためのスクリプトを作成しました。これはJSONファイルからメニューデータを取り出してページに挿入します。ページがロードされると、サブメニューはクリックされても開きません。JSON jQueryメニューの問題
私はHTMLファイルに1つを追加して、そこに問題があるかどうか、そしてそれが完全に機能するかどうかを確認しました。
コードの詳細が必要な場合は、私はdevサイトをここに住んでいますhttps://ketchup.dev.danielcoates.co.uk/(30/03/17は利用できません)。
メニューHTML
<div class="side-content">
<ul class="nav-main">
<li id="menu-0">
<a class="nav-submenu" data-toggle="nav-submenu" href="#">
<i class="si si-user"></i>
<span class="sidebar-mini-hide">User Profile</span>
</a>
<ul>
<li>
<a href="base_pages_profile.html">Profile</a>
</li>
<li>
<a href="base_pages_profile_v2.html">Profile v2</a>
</li>
<li>
<a href="base_pages_profile_edit.html">Profile Edit</a>
</li>
</ul>
</li>
</ul>
</div>
メニューコード
$(document).ready(function() {
$.getJSON('/menu/menu.json', function(data) {
// convert json into array
var menu = [];
$.each(data, function(k, v){
for (var i = 0; i < v.length; i++) {
menu.push(v[i]);
};
});
for(var i=0; i < menu.length; i++) {
if(menu[i]['type'] == 'item') {
$('.nav-main').append('<li id="menu-' + menu[i]['id'] + '"></li>');
$('#menu-' + menu[i][['id']]).append('\
<a href="' + menu[i]['link'] + '">\
<i class="' + menu[i]['icon'] + '"></i>\
<span class="sidebar-mini-hide">' + menu[i]['title'] + '</span>\
</a>'
);
} else if(menu[i]['type'] == 'header') {
$('.nav-main').append('<li id="menu-' + menu[i]['id'] + '"></li>');
$('#menu-' + menu[i][['id']]).append('\
<li class="nav-main-heading">\
<span class="sidebar-mini-hide">' + menu[i]['title'] + '</span>\
</li>'
);
} else if(menu[i]['type'] == 'submenu') {
$('.nav-main').append('<li id="menu-' + menu[i]['id'] + '"></li>');
$('#menu-' + menu[i][['id']]).append('\
<a class="nav-submenu" data-toggle="nav-submenu" href="#">\
<i class="' + menu[i]['icon'] + '"></i>\
<span class="sidebar-mini-hide">' + menu[i]['title'] + '</span>\
</a>'
)
} else if(menu[i]['type'] == 'submenu-item') {
$('#menu-' + menu[i]['parent']).append('<ul><li><a href="/test">Test</a></ul>');
};
};
});
});
JSON
{
"menu":
[
{ "id": 1,
"parent": 0,
"type": "item",
"active": false,
"title": "Dashboard",
"icon": "si si-speedometer",
"link": "/dashboard"
},
{ "id": 2,
"parent": 0,
"type": "header",
"active": false,
"title": "Pocurement",
"icon": false,
"link": false
},
{ "id": 3,
"parent": 0,
"type": "item",
"active": false,
"title": "Suppliers",
"icon": "si si-notebook",
"link": "/suppliers"
},
{ "id": 4,
"parent": 0,
"type": "item",
"active": true,
"title": "Duty Calculator",
"icon": "si si-calculator",
"link": "/app/duty_calculator"
},
{ "id": 5,
"parent": 0,
"type": "header",
"active": false,
"title": "Products",
"icon": false,
"link": false
},
{ "id": 6,
"parent": 0,
"type": "submenu",
"active": false,
"title": "Manage Products",
"icon": "si si-tag",
"link": "#"
},
{ "id": 7,
"parent": 6,
"type": "submenu-item",
"active": false,
"title": "List Products",
"icon": false,
"link": "/products/list"
}
]
}
あり、そこにメニューの読み込みに関する問題がページにありませんが、サブメニューの開口部が一度ロードされ、実際のページが提供されています –