Не получается назнаяить active вкладке меню
Приветствую!
Есть меню, в котором поменял ссылки с атрибута а, на атрибут span. <nav id='cssmenu'> <ul class="menu"> <li> <span class="ahref hidden-link-innen" data-link=''>Menu 1</span> <ul> <li> <span class="ahref hidden-link-innen" data-link="">Sub Menu 1</span> <ul class="class_child"> <li><span class="ahref hidden-link-innen" data-link="">Sub Sub Menu 1</span></li> </ul> </li> <span class="ahref hidden-link-innen" data-link="">Sub Menu 2</span> <span class="ahref hidden-link-innen" data-link="">Sub Menu 3</span> </ul> </li> <span class="ahref hidden-link-innen" data-link=''>Menu 1</span> <span class="ahref hidden-link-innen" data-link=''>Menu 1</span> </ul> </nav> Скрипт, который заставляет ссылки работать:
//ссылка в span вместо a
$(document).ready(function(){
$('.hidden-link-innen').click(function(){window.location = $(this).data('link'); return false;});
});
И скрипт, который назначает active активной вкладке меню, когда есть атрибут <a> и href:
$(function () {
$('.menu a').each(function () {
var location = window.location.href;
var link = this.href;
if(location == link) {
$(this).addClass('active');
}
});
});
Я попробывал заменить $('.menu a') на $('.menu span') и .href на data('link'), но не работает, не назначает ссылке в <span> класс active и браузер ругается. Можете помочь исправить скрипт? |
Vaska,
:-?
$(function () {
$('.hidden-link-innen').each(function () {
if(window.location == $(this).data('link')) {
$(this).addClass('active');
}
});
});
|
рони,
Не работает. Не присваивает active. Браузер ошибки не выдает. |
Vaska,
так выведите в консоль что у вас в window.location и $(this).data('link') возможно нужен if($(this).data('link').indexOf(window.location.hr ef) !== -1) |
Цитата:
|
Vaska,
$(function () {
$('.hidden-link-innen').each(function () {
console.log(window.location, $(this).data('link'))
if(window.location == $(this).data('link')) {
$(this).addClass('active');
}
});
});
|
рони,
В меню получается два блока <ul> с разными названиями классов, и в каждом блоке есть по одной одинаковой ссылке /home/store/feedback_score/store_id/1.html У второго блока <ul class="menu2"> Я просто не думал, что вы сделаете через класс в span, а не так как раньше было через класс в <ui>. Поэтому я не указал, в начале, про второй блок в меню. |
Vaska, пробуйте
$(function () {
$('.hidden-link-innen').each(function () {
let href = window.location.href, link = $(this).data('link');
if(href.indexOf(link) !== -1) {
$(this).addClass('active');
}
});
});
|
рони,
Работает, но не совсем так как раньше. Сейчас, если в меню есть суб-меню, то только ему назначает active, а раньше и первой вкладке и подменю назначалось. (вроде так было, несколько часов назад, если я ничего не путаю) Если сейчас я на странице подменю, то первая вкладка не подсвечивается и я не вижу в каком меню я сейчас нахожусь. |
Vaska,
$(function () {
$('.hidden-link-innen').each(function () {
let href = window.location.href, link = $(this).data('link');
if(href.indexOf(link) !== -1) {
$(this).addClass('active').parents().addClass('active');
}
});
});
|
| Часовой пояс GMT +3, время: 08:43. |