Dynamically generate multi-level menu lists from nested JSON data.
-Include 2 plugins-
View on Github
Description: renderizeMenu jQuery plugin helps you dynamically generate multi-level menu lists from nested JSON data.
data
Type: Array
Nested array.
settings
Type: Plain Object
A set of key/value pairs that configure the renderized menu. All settings are optional.
rootClass
Type: string
Css class for <ul> (The Menu Bar/Menu Level = 0)
itemClass
Type: string
Css class for <li> tag
linkClass
Type: string
Css class for <a> tag
itemHasMenuClass
Type: string
Css class for <li> tag (root for menu Level = 1)
linkHasMenuClass
Type: string
Css class for <a> tag (root for menu Level = 1)
menuClass
Type: string
Css class for <ul> tag
menuItemClass
Type: string
Css class for <li> (Menu Items Level = 1)
menuLinkClass
Type: string
Css class for <a> (Menu Items Level = 1)
menuItemHasSubmenuClass
Type: string
Css class for <li> (root for menus Level > 1)
menuLinkHasSubmenuClass
Type: string
Css class for <a> (root for menus Level > 1)
submenuClass
Type: string
Css class for <ul> tag (menus Level > 1)
active (Default: window.location.href)
Type: string
Current URL.
dropdownIcon
Type: string
Html code for dropdown icon
Bootstrap 4 dos'nt support multilevel menu, so let's use Smartmenus plugin.
Add the CSS files
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"/>
<link rel="stylesheet" href="smartmenus/addons/bootstrap-4/jquery.smartmenus.bootstrap-4.css">
Add the Javascript files
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="renderMenu.js"></script>
<script type="text/javascript" src="smartmenus/jquery.smartmenus.min.js"></script>
<script type="text/javascript" src="smartmenus/addons/bootstrap-4/jquery.smartmenus.bootstrap-4.js"></script>
Add an empty unorder list element.
<ul id="mymenu"></ul>
Use the plugin to renderize the menu and then use your favorite plugin to decorate.
// Data input
var data = [/* Nested Array */];
// Renderize the Menu
$('#mymenu').renderizeMenu(data, {
rootClass: "nav navbar-nav mr-auto",
itemClass: 'nav-item',
linkClass: 'nav-link',
itemHasMenuClass: "nav-item dropdown",
linkHasMenuClass: "nav-link dropdown-toggle",
menuClass: "dropdown-menu",
menuLinkClass: "dropdown-item",
menuItemHasSubmenuClass: "dropdown",
menuLinkHasSubmenuClass: "dropdown-item dropdown-toggle",
submenuClass: "dropdown-menu",
});
// Apply your favorite plugin
jQuery.SmartMenus.Bootstrap.init();