Всем привет! Есть проблема при выводе дочернего списка меню, при нажатии на пункт с дочерним меню элементу присваивается класс .focuse для отображения списка. Суть проблемы в том что ссылки в дочернем меню не кликабельны и по ним нельзя перейти, из-за тогда что скрипт скрывает меню.
Скрипт
этого чувака
Разметчика:
<nav id="site-navigation">
<button>=</button>
<ul>
<li><a href="#">Далеко-далеко.</a></li><li><a href="#">Путь!</a></li><li><a href="#">Своих?</a></li><li><a href="#">Маленькая.</a></li><li class="submenu1"><a href="#">Единственное!</a>
<ul id="rt">
<li><a href="#">Далеко-далеко.</a></li>
<li><a href="https://html5book.ru/svoystvo-display/">Буквенных!</a></li>
</ul>
</li>
</ul>
</nav>
Сам скрипт:
( function() {
var container, button, menu, links;
container = document.getElementById( 'site-navigation' );
if ( ! container )
return;
button = container.getElementsByTagName( 'button' )[0];
if ( 'undefined' === typeof button )
return;
menu = container.getElementsByTagName( 'ul' )[0];
// Hide menu toggle button if menu is empty and return early.
if ( 'undefined' === typeof menu ) {
button.style.display = 'none';
return;
}
if ( -1 === menu.className.indexOf( 'nav-menu' ) )
menu.className += ' nav-menu';
button.onclick = function() {
if ( -1 !== container.className.indexOf( 'toggled' ) )
container.className = container.className.replace( ' toggled', '' );
else
container.className += ' toggled';
};
// Get all the link elements within the menu. Return if none are found.
links = menu.getElementsByTagName( 'a' );
if ( 0 === links.length )
return;
// Each time a menu link is focused or blurred call the function toggle_focus
for ( i = 0, len = links.length; i < len; i++ ) {
links[i].onfocus = toggle_focus;
links[i].onblur = toggle_focus;
};
function toggle_focus() {
// Skipping the actual link itself as this can be styled with :focus
var current = this.parentElement;
var parents = []
// Build an array of the parent elements of the focused link until we hit the top level .nav-menu ul
while ( -1 === current.className.indexOf( 'nav-menu' ) ) {
parents.unshift( current );
current = current.parentElement;
}
// For each element in parents[] toggle the class .focus
for ( i = 0, len = parents.length; i < len; i++ ) {
if ( -1 !== parents[i].className.indexOf( 'focus' ) )
parents[i].className = parents[i].className.replace( ' focus', '' );
else
parents[i].className += ' focus';
}
}
} )();