Skip to content

Instantly share code, notes, and snippets.

@sveetch
Created February 13, 2018 11:05
Show Gist options
  • Save sveetch/6bfceebfa395f1bfcebbad0ef1a7dffd to your computer and use it in GitHub Desktop.
Save sveetch/6bfceebfa395f1bfcebbad0ef1a7dffd to your computer and use it in GitHub Desktop.
Hack on Foundation 6.4.x responsive navigation drilldown to open item for current page
$(function($) {
/*
* Initialize Foundation
*/
$(document).foundation();
/*
* Trick to automatically open drilldown menu directly on the current page panel.
* This is recursive, due to drilldown mechanics, it needs to open all sub menu
* to reach item.
*
* This requires:
*
* - Root menu (the 'ul' containing items to recurse) to have an id;
* - Toggle button container ('nav') to define menu id in 'data-responsive-auto_open' attribute;
* - Each 'li' to cross to reach current page item must have a 'active' class and a 'id';
*/
$('[data-responsive-toggle]').on('toggled.zf.responsiveToggle', function (e) {
// Find defined menu to scan if any
var target_menu = $(e.target).attr('data-responsive-auto_open'),
$menu = (target_menu) ? $('#'+target_menu) : null;
if($menu){
// Cross every 'li' and open it to reach current page item
$menu.find('li.active').each(function(i){
$('#'+ $(this).attr('id') +' > a').trigger('click.zf.drilldown');
});
}
});
});
<!--
On this sample menu, Drilldown item 'Sub bar 1' will be directly opened when opening menu in mobile mode
-->
<div id="main-top-bar">
<nav class="title-bar" data-responsive-toggle="main-menu"
data-responsive-auto_open="main-menu-list" data-hide-for="large">
<button class="menu-icon" type="button" data-toggle></button>
</nav>
<nav id="main-menu" class="top-bar">
<ul id="main-menu-list" class="menu vertical large-horizontal"
data-responsive-menu="drilldown large-dropdown"
data-back-button='<li class="js-drilldown-back"><a>Retour</a></li>'
data-parent-link="true">
<li class="level-1 has-submenu active"
id="menu-entry-1">
<a href="/lorem/">Lorem</a>
<ul class="submenu vertical menu">
<li class="level-2" id="menu-entry-2">
<a href="/lorem/foo/">Foo</a>
</li>
<li class="level-2 active" id="menu-entry-3">
<a href="/lorem/bar/">Bar</a>
<ul class="submenu vertical menu">
<li class="level-3 active" id="menu-entry-5">
<a href="/lorem/bar/sub1/">Sub bar 1</a>
</li>
<li class="level-3" id="menu-entry-6">
<a href="/lorem/bar/sub2/">Sub bar 2</a>
</li>
</ul>
</li>
<li class="level-2" id="menu-entry-4">
<a href="/lorem/pika/">Pika</a>
</li>
</ul>
</li>
<li class="level-1" id="menu-entry-2">
<a href="/lipsum/">Lipsum</a>
</li>
</ul>
</nav>
</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment