/** * * Event for open mobile menu */ $("#button-open-mobile-menu").on("click", function() { setTimeout(function() { var mobileMenu = $("#container-mobile-menu"); var isExpanded = mobileMenu.data("isExpanded"); if (isExpanded) { mobileMenu.height(0); } else { mobileMenu.height(calcChildrensHeight(mobileMenu)); } mobileMenu.data("isExpanded", !isExpanded); }, 0); }); /** * * Event for open mobile submenu */ $("#container-mobile-menu").on("click", ".button-open-mobile-submenu", function() { var mobileSubMenu = $(this).next(); var mobileMenu = $("#container-mobile-menu"); var childrensHeight = calcChildrensHeight(mobileSubMenu); if (mobileSubMenu.hasClass("opened")) { mobileSubMenu.removeClass("opened").height(0); mobileMenu.css("height", "-=" + childrensHeight + "px"); } else { mobileSubMenu.addClass("opened").height(childrensHeight); mobileMenu.css("height", "+=" + childrensHeight + "px"); } }); /** * * Event for close mobile menu */ $("body").on("click", function(event) { var target = event.target; var mobileMenu = $("#container-mobile-menu"); var isExpanded = mobileMenu.data("isExpanded"); var buttonOpenMenu = $("#button-open-mobile-menu"); if (buttonOpenMenu.has(target).length === 0 && mobileMenu.has(target).length === 0 && isExpanded) { mobileMenu.height(0).data("isExpanded", false); } }); /** * * */ function calcChildrensHeight(parent) { var childrensHeight = 0; parent.find("> li").each(function() { childrensHeight += $(this).outerHeight(true); }); return childrensHeight; }