How to create Bootstrap4 navbar with menus and sub menus with json data
up vote
2
down vote
favorite
I have a json from which I want to create a Bootstrap 4 navbar. As i am new to JavaScript and Jquery I am not getting an Idea of how i can achieve that.
here is my json data:
var data = {
"Setup":
[
{ "type": "Submenu-1" },
{ "type": "submenu-2" }
],
"Report":
[
{ "type": "subreport-1" },
{ "type": "subreport-2" }
],
"logout":
};
i want to have a navbar like
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<!-- Links -->
<!-- DropDown -->
<!-- setup -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="" id="navbardrop"
data-toggle="dropdown"> Setup </a>
<div id="drop" class="dropdown-menu">
<a class="dropdown-item" href="#"> submenu-1</a>
<a class="dropdown-item" href="#"> submenu-2</a>
</div></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop"
data-toggle="dropdown"> Report </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="">subreport-1</a>
<a class="dropdown-item" href="">subreport-2</a>
</div></li>
<li class="nav-item">
<a class="nav-link" href="">Logout</a>
</li>
</ul>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>I don't know how i can achieve this from javascript or Jquery so can any one out there help me or advice me how can achieve this?
and my JSON data is Dynamic it can vary from 3 menus to 6-7 same as for submenus also.
so at the end i want to create a dynamic navbar.
javascript jquery html bootstrap-4
add a comment |
up vote
2
down vote
favorite
I have a json from which I want to create a Bootstrap 4 navbar. As i am new to JavaScript and Jquery I am not getting an Idea of how i can achieve that.
here is my json data:
var data = {
"Setup":
[
{ "type": "Submenu-1" },
{ "type": "submenu-2" }
],
"Report":
[
{ "type": "subreport-1" },
{ "type": "subreport-2" }
],
"logout":
};
i want to have a navbar like
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<!-- Links -->
<!-- DropDown -->
<!-- setup -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="" id="navbardrop"
data-toggle="dropdown"> Setup </a>
<div id="drop" class="dropdown-menu">
<a class="dropdown-item" href="#"> submenu-1</a>
<a class="dropdown-item" href="#"> submenu-2</a>
</div></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop"
data-toggle="dropdown"> Report </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="">subreport-1</a>
<a class="dropdown-item" href="">subreport-2</a>
</div></li>
<li class="nav-item">
<a class="nav-link" href="">Logout</a>
</li>
</ul>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>I don't know how i can achieve this from javascript or Jquery so can any one out there help me or advice me how can achieve this?
and my JSON data is Dynamic it can vary from 3 menus to 6-7 same as for submenus also.
so at the end i want to create a dynamic navbar.
javascript jquery html bootstrap-4
1
What have you tried so far?
– adiga
2 days ago
@adiga i have tried this " for (var i in data) { $('.nav-tabs').append('<li role="presentation" class=""><a href="#' + i + '" aria-controls="' + i + '" role="tab" data-toggle="tab">' + i + '</a></li>'); var div = '<div role="tabpanel" class="tab-pane" id="' + i + '">'; for (var j = 0; j < data[i].length; j++) { var obj = data[i][j]; div += '<div id="' + obj.id + '">' + obj.type + '</div>'; } $('.tab-content').append(div); }" i ahve found this one from google only but its only working for ul tag and not for nav
– dheeraj kumar
2 days ago
Please see this example: jsfiddle.net/saslam/vepeLmm0
– Farhad Mortezapour
2 days ago
@FarhadMortezapour its not talkin bootstrap cl;asses and not even form the toggle button when used for small device
– manish thakur
2 days ago
@FarhadMortezapour that was not helpfull at all ;(
– manish thakur
2 days ago
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
I have a json from which I want to create a Bootstrap 4 navbar. As i am new to JavaScript and Jquery I am not getting an Idea of how i can achieve that.
here is my json data:
var data = {
"Setup":
[
{ "type": "Submenu-1" },
{ "type": "submenu-2" }
],
"Report":
[
{ "type": "subreport-1" },
{ "type": "subreport-2" }
],
"logout":
};
i want to have a navbar like
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<!-- Links -->
<!-- DropDown -->
<!-- setup -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="" id="navbardrop"
data-toggle="dropdown"> Setup </a>
<div id="drop" class="dropdown-menu">
<a class="dropdown-item" href="#"> submenu-1</a>
<a class="dropdown-item" href="#"> submenu-2</a>
</div></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop"
data-toggle="dropdown"> Report </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="">subreport-1</a>
<a class="dropdown-item" href="">subreport-2</a>
</div></li>
<li class="nav-item">
<a class="nav-link" href="">Logout</a>
</li>
</ul>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>I don't know how i can achieve this from javascript or Jquery so can any one out there help me or advice me how can achieve this?
and my JSON data is Dynamic it can vary from 3 menus to 6-7 same as for submenus also.
so at the end i want to create a dynamic navbar.
javascript jquery html bootstrap-4
I have a json from which I want to create a Bootstrap 4 navbar. As i am new to JavaScript and Jquery I am not getting an Idea of how i can achieve that.
here is my json data:
var data = {
"Setup":
[
{ "type": "Submenu-1" },
{ "type": "submenu-2" }
],
"Report":
[
{ "type": "subreport-1" },
{ "type": "subreport-2" }
],
"logout":
};
i want to have a navbar like
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<!-- Links -->
<!-- DropDown -->
<!-- setup -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="" id="navbardrop"
data-toggle="dropdown"> Setup </a>
<div id="drop" class="dropdown-menu">
<a class="dropdown-item" href="#"> submenu-1</a>
<a class="dropdown-item" href="#"> submenu-2</a>
</div></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop"
data-toggle="dropdown"> Report </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="">subreport-1</a>
<a class="dropdown-item" href="">subreport-2</a>
</div></li>
<li class="nav-item">
<a class="nav-link" href="">Logout</a>
</li>
</ul>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>I don't know how i can achieve this from javascript or Jquery so can any one out there help me or advice me how can achieve this?
and my JSON data is Dynamic it can vary from 3 menus to 6-7 same as for submenus also.
so at the end i want to create a dynamic navbar.
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<!-- Links -->
<!-- DropDown -->
<!-- setup -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="" id="navbardrop"
data-toggle="dropdown"> Setup </a>
<div id="drop" class="dropdown-menu">
<a class="dropdown-item" href="#"> submenu-1</a>
<a class="dropdown-item" href="#"> submenu-2</a>
</div></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop"
data-toggle="dropdown"> Report </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="">subreport-1</a>
<a class="dropdown-item" href="">subreport-2</a>
</div></li>
<li class="nav-item">
<a class="nav-link" href="">Logout</a>
</li>
</ul>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script><link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<!-- Links -->
<!-- DropDown -->
<!-- setup -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="" id="navbardrop"
data-toggle="dropdown"> Setup </a>
<div id="drop" class="dropdown-menu">
<a class="dropdown-item" href="#"> submenu-1</a>
<a class="dropdown-item" href="#"> submenu-2</a>
</div></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop"
data-toggle="dropdown"> Report </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="">subreport-1</a>
<a class="dropdown-item" href="">subreport-2</a>
</div></li>
<li class="nav-item">
<a class="nav-link" href="">Logout</a>
</li>
</ul>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>javascript jquery html bootstrap-4
javascript jquery html bootstrap-4
edited 2 days ago
asked 2 days ago
manish thakur
9110
9110
1
What have you tried so far?
– adiga
2 days ago
@adiga i have tried this " for (var i in data) { $('.nav-tabs').append('<li role="presentation" class=""><a href="#' + i + '" aria-controls="' + i + '" role="tab" data-toggle="tab">' + i + '</a></li>'); var div = '<div role="tabpanel" class="tab-pane" id="' + i + '">'; for (var j = 0; j < data[i].length; j++) { var obj = data[i][j]; div += '<div id="' + obj.id + '">' + obj.type + '</div>'; } $('.tab-content').append(div); }" i ahve found this one from google only but its only working for ul tag and not for nav
– dheeraj kumar
2 days ago
Please see this example: jsfiddle.net/saslam/vepeLmm0
– Farhad Mortezapour
2 days ago
@FarhadMortezapour its not talkin bootstrap cl;asses and not even form the toggle button when used for small device
– manish thakur
2 days ago
@FarhadMortezapour that was not helpfull at all ;(
– manish thakur
2 days ago
add a comment |
1
What have you tried so far?
– adiga
2 days ago
@adiga i have tried this " for (var i in data) { $('.nav-tabs').append('<li role="presentation" class=""><a href="#' + i + '" aria-controls="' + i + '" role="tab" data-toggle="tab">' + i + '</a></li>'); var div = '<div role="tabpanel" class="tab-pane" id="' + i + '">'; for (var j = 0; j < data[i].length; j++) { var obj = data[i][j]; div += '<div id="' + obj.id + '">' + obj.type + '</div>'; } $('.tab-content').append(div); }" i ahve found this one from google only but its only working for ul tag and not for nav
– dheeraj kumar
2 days ago
Please see this example: jsfiddle.net/saslam/vepeLmm0
– Farhad Mortezapour
2 days ago
@FarhadMortezapour its not talkin bootstrap cl;asses and not even form the toggle button when used for small device
– manish thakur
2 days ago
@FarhadMortezapour that was not helpfull at all ;(
– manish thakur
2 days ago
1
1
What have you tried so far?
– adiga
2 days ago
What have you tried so far?
– adiga
2 days ago
@adiga i have tried this " for (var i in data) { $('.nav-tabs').append('<li role="presentation" class=""><a href="#' + i + '" aria-controls="' + i + '" role="tab" data-toggle="tab">' + i + '</a></li>'); var div = '<div role="tabpanel" class="tab-pane" id="' + i + '">'; for (var j = 0; j < data[i].length; j++) { var obj = data[i][j]; div += '<div id="' + obj.id + '">' + obj.type + '</div>'; } $('.tab-content').append(div); }" i ahve found this one from google only but its only working for ul tag and not for nav
– dheeraj kumar
2 days ago
@adiga i have tried this " for (var i in data) { $('.nav-tabs').append('<li role="presentation" class=""><a href="#' + i + '" aria-controls="' + i + '" role="tab" data-toggle="tab">' + i + '</a></li>'); var div = '<div role="tabpanel" class="tab-pane" id="' + i + '">'; for (var j = 0; j < data[i].length; j++) { var obj = data[i][j]; div += '<div id="' + obj.id + '">' + obj.type + '</div>'; } $('.tab-content').append(div); }" i ahve found this one from google only but its only working for ul tag and not for nav
– dheeraj kumar
2 days ago
Please see this example: jsfiddle.net/saslam/vepeLmm0
– Farhad Mortezapour
2 days ago
Please see this example: jsfiddle.net/saslam/vepeLmm0
– Farhad Mortezapour
2 days ago
@FarhadMortezapour its not talkin bootstrap cl;asses and not even form the toggle button when used for small device
– manish thakur
2 days ago
@FarhadMortezapour its not talkin bootstrap cl;asses and not even form the toggle button when used for small device
– manish thakur
2 days ago
@FarhadMortezapour that was not helpfull at all ;(
– manish thakur
2 days ago
@FarhadMortezapour that was not helpfull at all ;(
– manish thakur
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
I hope it will help to generate dynamic navbar from Json data.
var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
wait ill test it
– manish thakur
2 days ago
|
show 2 more comments
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
I hope it will help to generate dynamic navbar from Json data.
var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
wait ill test it
– manish thakur
2 days ago
|
show 2 more comments
up vote
2
down vote
accepted
I hope it will help to generate dynamic navbar from Json data.
var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
wait ill test it
– manish thakur
2 days ago
|
show 2 more comments
up vote
2
down vote
accepted
up vote
2
down vote
accepted
I hope it will help to generate dynamic navbar from Json data.
var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>I hope it will help to generate dynamic navbar from Json data.
var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>var data = {
"Setup":
[
{ "type": "Submenu-1", "link" : "https://www.google.com" },
{ "type": "submenu-2", "link" : "https://www.google.com" }
],
"Report":
[
{ "type": "subreport-1", "link" : "https://www.google.com" },
{ "type": "subreport-2", "link" : "https://www.google.com" }
],
"logout":
};
$(document).ready(function() {
for (var item in data) {
var _menu = "";
var _submenuData = data[item];
if(_submenuData.length > 0) {
var _submenu = "";
for(var i = 0; i < _submenuData.length; i++) {
_submenu += "<a class='dropdown-item' href='" + _submenuData[i]["link"] + "'>" + _submenuData[i]["type"] + "</a>";
}
_menu = "<li class='nav-item dropdown'>"
+ "<a class='nav-link dropdown-toggle' href='' id='navbardrop' data-toggle='dropdown'> " + item + " </a>"
+ "<div id='drop' class='dropdown-menu'>"
+ _submenu
+ "</div>"
+ "</li>";
}
else {
_menu = "<li class='nav-item'>"
+ "<a class='nav-link' href=''> " + item + " </a>"
+ "</li>";
}
$("#navbarId").append(_menu);
}
});<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul id="navbarId" class="navbar-nav mr-auto">
</ul>
</div>
</nav>edited 2 days ago
answered 2 days ago
Aquib Iqbal
2147
2147
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
wait ill test it
– manish thakur
2 days ago
|
show 2 more comments
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
wait ill test it
– manish thakur
2 days ago
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
hey it is the solution i was looking for thanxx :)... i have a small question to ask may i ?
– manish thakur
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
Yes, ask question
– Aquib Iqbal
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
like in my json currently i am calling only sub menu name ...now what if i have to provide a link to submenu-1...should i have to call that link in my json?..like some one click on submenu then it should go to that link
– manish thakur
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
I updated the snippet, check it you will get how to add link(url) to sub menus
– Aquib Iqbal
2 days ago
wait ill test it
– manish thakur
2 days ago
wait ill test it
– manish thakur
2 days ago
|
show 2 more comments
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53410013%2fhow-to-create-bootstrap4-navbar-with-menus-and-sub-menus-with-json-data%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
What have you tried so far?
– adiga
2 days ago
@adiga i have tried this " for (var i in data) { $('.nav-tabs').append('<li role="presentation" class=""><a href="#' + i + '" aria-controls="' + i + '" role="tab" data-toggle="tab">' + i + '</a></li>'); var div = '<div role="tabpanel" class="tab-pane" id="' + i + '">'; for (var j = 0; j < data[i].length; j++) { var obj = data[i][j]; div += '<div id="' + obj.id + '">' + obj.type + '</div>'; } $('.tab-content').append(div); }" i ahve found this one from google only but its only working for ul tag and not for nav
– dheeraj kumar
2 days ago
Please see this example: jsfiddle.net/saslam/vepeLmm0
– Farhad Mortezapour
2 days ago
@FarhadMortezapour its not talkin bootstrap cl;asses and not even form the toggle button when used for small device
– manish thakur
2 days ago
@FarhadMortezapour that was not helpfull at all ;(
– manish thakur
2 days ago