@smsi

Нет перехода по ссылкам из-за JS функции. Как изменить JS функцию, чтобы переход по ссылкам заработал?

День добрый.
Изучаю Django.
Возникла трудность с использованием готового шаблона, который я переделываю.

Есть код меню, который ведет себя следующим образом:
Меню по клику открывается, пункты меню по клику разворачиваются, но при клике по ссылкам внутри переход по ссылкам не происходит, меню просто сворачивается.
Мне понятно, что это из-за навешанной функции JS, но, к сожалению, JS я совсем не знаю.
Как изменить поведение функции таким образом, чтобы при клике по ссылкам осуществлялся переход по ним?

Выделил ключевой кусок кода:
Код html
<div class="page_menu_content">
    <ul class="page_menu_nav">
        <li class="page_menu_item">
        <li class="page_menu_item has-children">
            <a href="#">Меню<i class="fa fa-angle-down"></i></a>
            <ul class="page_menu_selection">
                 <li id = "id2"><a href="/2/">2</a></li>
                 <li id = "id1"><a href="/1/">2</a></li>
            </ul>
        </li>
    </ul>
</div>


Код JS
function initPageMenu()
	{
		if($('.page_menu').length && $('.page_menu_content').length)
		{
			var menu = $('.page_menu');
			var menuContent = $('.page_menu_content');
			var menuTrigger = $('.menu_trigger');

			//Open / close page menu
			menuTrigger.on('click', function()
			{
				if(!menuActive)
				{
					openMenu();
				}
				else
				{
					closeMenu();
				}
			});

			//Handle page menu
			if($('.page_menu_item').length)
			{
				var items = $('.page_menu_item');
				items.each(function()
				{
					var item = $(this);
					if(item.hasClass("has-children"))
					{
						item.on('click', function(evt)
						{
							evt.preventDefault();
							evt.stopPropagation();
							var subItem = item.find('> ul');
						    if(subItem.hasClass('active'))
						    {
						    	subItem.toggleClass('active');
								TweenMax.to(subItem, 0.3, {height:0});
						    }
						    else
						    {
						    	subItem.toggleClass('active');
						    	TweenMax.set(subItem, {height:"auto"});
								TweenMax.from(subItem, 0.3, {height:0});
						    }
						});
					}
				});
			}
		}
	}

	function openMenu()
	{
		var menu = $('.page_menu');
		var menuContent = $('.page_menu_content');
		TweenMax.set(menuContent, {height:"auto"});
		TweenMax.from(menuContent, 0.3, {height:0});
		menuActive = true;
	}

	function closeMenu()
	{
		var menu = $('.page_menu');
		var menuContent = $('.page_menu_content');
		TweenMax.to(menuContent, 0.3, {height:0});
		menuActive = false;
	}

Код css не привожу, он не важен, мне кажется.
Интуитивно мне кажется, что из нужно вытащить id и подставить соответствующий ему a href в location, но как это сделать - не пойму.
Помогите пожалуйста. Заранее спасибо.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
@xonar
А смысл?
У вас evt.preventDefault(); это отменяет дефолтное поведение. Как по мне правильнее было бы сделать, чтоб при нажатие на выпадающее меню ему навешивался класс active у которого в стилях было бы показывать этот блок, а по дефолту эти менюшки выпадающие скрыть. Тут больше стилями можно сделать, чем JS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 14:10
500 руб./за проект
19 апр. 2024, в 13:31
10000 руб./за проект