Справка по mmenu - как добавить класс "Выбранные" на текущую страницу (возможно, с использованием дополнения "currentItem")
Я использую Mmenu для создания меню. Хотя я открыт для советов о том, использовать ли jquery или PHP (рекомендации по передовому опыту), мне нужно иметь возможность легко включать мое меню на каждой новой странице. Я надеюсь, что это делает обновления проще.
Проблема в том, что mmenu, похоже, не автоматически активирует активную страницу при загрузке страницы. После того, как нажата ссылка на новую страницу, li появляется выбранным, но как только новая страница загружается, и сценарии запускаются снова, и я попадаю в главное меню. Проблема может быть еще более осложнена тем, что у меня есть подменю.
Я попытался использовать сторонний аддон "currentitem" для mmenu, но безуспешно.
Это упрощенный пример меню.
<nav id="menu">
<li>
<ul>
<li><a href="/root/page1.html">page1</a></li>
<li>
<ul>
<li><a href="/root/page2.html">page2</a></li>
<li><a href="/root/page3.html">page3</a></li>
</ul>
</li>
</ul>
</ul>
</nav>
2 ответа
Вам нужно добавить класс 'mm-selected' в родительский тег li для активного href, это сделает ваше меню открытым в правильной позиции.
<nav id="menu">
<li>
<ul>
<li class="mm-selected"><a href="/root/page1.html">page1</a></li> <-- this will be highlighted and will open the sub menu below.
<li>
<ul> <-- this sub menu will show when the parent is selected
<li><a href="/root/page2.html">page2</a></li>
<li><a href="/root/page3.html">page3</a></li>
</ul>
</li>
</ul>
</ul>
</nav>
Надеюсь, это поможет.
Дерек
Если я правильно понимаю вопрос, я бы просто перебрал <a>
теги, пока не найдете совпадение с window.location.href.indexOf(href)
, Если у вас действительно большое меню, я уверен, что кто-то еще может порекомендовать более оптимизированное решение - возможно, в этом случае лучше подготовить класс с использованием PHP.
$('#menu a').each(function(){
var href = $(this).attr('href');
if ( window.location.href.indexOf(href) >= 0 ){
$(this).parent('li').addClass('current-page');
}
});
Затем, после этого, инициируйте Mmenu с current-page
класс установлен на classNames
конфигурация для selected
,
$("#menu").mmenu({
//Options
"offCanvas": {
"zposition": "front" //Just an example option
}
}, {
//Configuration
classNames: {
selected: "current-page" //Change this class to match the default li you want
}
});