Dynamic content

Introduction

In this tutorial, we'll add a new menu item (<li>) and a new submenu (<ul>) in an already created menu. Just follow the tutorial step by step and you'll have it up and running in no time.

Setup the menu

Lets start with creating a .html file and add the markup for the page and the menu. If you need help with this part, please read the off-canvas menu tutorial first.

<nav id="menu"> <ul id="list"> <li><a href="/">Home</a></li> <li id="item"><a href="/about/">About us</a></li> <li><a href="/contact/">Contact</a></li> </ul> </nav> <script> document.addEventListener( "DOMContentLoaded", () => { new Mmenu( "#menu" ); } ); </script> 

Note the ID on the <ul> and <li>, we'll be using them later on.

Add a listitem

To add a new listitem (<li>), we first need to find the listview (<ul>) we want to add it to. The plugin wrapped it in a <div> and transfered its ID to this <div>, therefor we need to find #list .mm-listview.

<script> const listview = document.querySelector( "#list .mm-listview" ); </script> 

Next, lets create a new <li> and add an <a> to it.

<script> const listitem = document.createElement( "li" ); listitem.innerHTML = `<a href="/work">Our work</a>`; </script> 

Now all we need to do, is add the newly created <li> to the listview, the plugin automatically picks up on this change and will do the rest for us.

<script> listview.append( listitem ); </script> 

Add a submenu

Adding a submenu (<ul>) is no different from adding a listitem. Again, we first need to find the listitem (<li>) we want to add it to.

<script> const listitem = document.querySelector( "#item" ); </script> 

Next, lets create a new <ul> and add some listitems to it.

<script> const listview = document.createElement( "ul" ); listview.innerHTML = ` <li><a href="/about/history">History</a></li> <li><a href="/about/team">The team</a></li> <li><a href="/about/address">Our address</a></li>`; </script> 

Now all we need to do, is add the newly created <ul> to the listitem, the plugin automatically picks up on this change and will do the rest for us.

<script> listitem.append( listview ); </script> 

Result

Add it all together and you should have a .html file which looks something like this.

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" /> <title>My webpage</title> <link href="path/to/styles.css" rel="stylesheet" /> <link href="path/to/mmenu.css" rel="stylesheet" /> </head> <body> <!-- The page --> <div id="page"> <div id="header"> <a href="#menu">Open the menu</a> </div> <div id="content"> <p><strong>This is a demo.</strong><br> <a id="add_li" href="#">Add a new menu item</a><br> <a id="add_ul" href="#">Add a new submenu</a></p> </div> </div> <!-- The menu --> <nav id="menu"> <ul id="list"> <li><a href="/">Home</a></li> <li id="item"><a href="/about/">About us</a></li> <li><a href="/contact/">Contact</a></li> </ul> </nav> <script src="path/to/mmenu.js"></script> <script> document.addEventListener( "DOMContentLoaded", () => { new Mmenu( "#menu" ); document.querySelector( "#add_li" ) .addEventListener( "click", ( evnt ) => { evnt.preventDefault(); // Find the listview. const listview = document.querySelector( "#list .mm-listview" ); // Create the new listitem. const listitem = document.createElement( "li" ); listitem.innerHTML = `<a href="/work">Our work</a>`; // Add the listitem to the listview. listview.append( listitem ); } ); document.querySelector( "#add_ul" ) .addEventListener( "click", ( evnt ) => { evnt.preventDefault(); // Find the istitem. const listitem = document.querySelector( "#item" ); // Create the new listview. const listview = document.createElement( "ul" ); listview.innerHTML = ` <li><a href="/about/history">History</a></li> <li><a href="/about/team">The team</a></li> <li><a href="/about/address">Our address</a></li>`; // Add the listview to the listitem. listitem.append( listview ); } ); } ); </script> </body> </html>