Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2017, 10:14
Новичок на форуме
Отправить личное сообщение для koles01 Посмотреть профиль Найти все сообщения от koles01
 
Регистрация: 22.02.2017
Сообщений: 1

Адаптивное мобильное меню,проблема с выводом дочерних пунтков
Всем привет! Есть проблема при выводе дочернего списка меню, при нажатии на пункт с дочерним меню элементу присваивается класс .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';
		}
	}
} )();


Последний раз редактировалось koles01, 22.02.2017 в 10:24. Причина: приложил фото
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск