1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| "use strict";
// ----------
// au chargement de page
window.addEventListener('DOMContentLoaded', function(){
const tree = document.getElementById("navTree");
setTreeView(tree); // remarque : au cas où on peut avoir plusieurs "trees", on passe le "tree" en paramètre
});
// ----------
function setTreeView(tree)
{
let tree_elts = tree.querySelectorAll("li");
tree_elts.forEach( elt => {
if( elt.querySelector("ul") ) // si on a un sous-menu (présence de ul dans le li)
{
elt.classList.add("caret"); // ajoute "caret" au li
elt.querySelector("ul").classList.add("nested"); // ajoute "nested" au ul enfant du li
}
});
let togglers = tree.querySelectorAll(".caret");
togglers.forEach( elt => {
elt.addEventListener("click", function(event) {
event.stopPropagation(); // IMPORTANT (stoppe la propagation de l évènement)
this.querySelector("ul.nested").classList.toggle("active");
this.classList.toggle("caret-down");
});
});
}
/* --------- */ |