forked from spinnaker/spinnaker.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnav_script.html
42 lines (39 loc) · 1.21 KB
/
nav_script.html
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<script>
$(document).ready(function() {
var ACTIVE_CLASS = 'active';
var ACTIVE_SELECTOR = '.' + ACTIVE_CLASS;
var OPEN_CLASS = 'open';
$('.nav__items > li, li.collapsed').each(function(i, li) {
var $li = $(li);
var $ul = $li.find('> ul');
var hasActiveChild = $li.find(ACTIVE_SELECTOR).length !== 0;
setInitialSubnavState($li, $ul, hasActiveChild);
$li.find('> span').on('click', function() {
toggleSubNav($li, $ul, hasActiveChild);
});
});
function setInitialSubnavState($parentLi, $subnavUl, hasActiveChild) {
$parentLi.addClass('collapsible');
if ($parentLi.hasClass('collapsed')) {
if (hasActiveChild) {
$parentLi.addClass(OPEN_CLASS);
} else {
$subnavUl.hide();
}
} else {
$parentLi.addClass(OPEN_CLASS);
}
}
function toggleSubNav($parentLi, $subnavUl, hasActiveChild) {
if (hasActiveChild) {
if (!$parentLi.hasClass(OPEN_CLASS)) {
$parentLi.removeClass(ACTIVE_CLASS);
} else {
$parentLi.addClass(ACTIVE_CLASS);
}
}
$parentLi.toggleClass(OPEN_CLASS);
$subnavUl.toggle({ duration: 100 });
}
});
</script>