Javascript.RU

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

Не получается назнаяить 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 и браузер ругается.

Можете помочь исправить скрипт?
Ответить с цитированием
  #2 (permalink)  
Старый 15.01.2021, 15:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Vaska,

$(function () {
        $('.hidden-link-innen').each(function () {
            if(window.location == $(this).data('link')) {
                $(this).addClass('active');
            }
        });
    });
Ответить с цитированием
  #3 (permalink)  
Старый 15.01.2021, 15:41
Профессор
Отправить личное сообщение для Vaska Посмотреть профиль Найти все сообщения от Vaska
 
Регистрация: 08.05.2017
Сообщений: 178

рони,
Не работает. Не присваивает active. Браузер ошибки не выдает.
Ответить с цитированием
  #4 (permalink)  
Старый 15.01.2021, 15:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Vaska,
так выведите в консоль что у вас в window.location и $(this).data('link')
возможно нужен if($(this).data('link').indexOf(window.location.hr ef) !== -1)
Ответить с цитированием
  #5 (permalink)  
Старый 15.01.2021, 16:45
Профессор
Отправить личное сообщение для Vaska Посмотреть профиль Найти все сообщения от Vaska
 
Регистрация: 08.05.2017
Сообщений: 178

Сообщение от рони Посмотреть сообщение
Vaska,
if($(this).data('link').indexOf(window.location.hr ef) !== -1)
Это тоже не работает.
Ответить с цитированием
  #6 (permalink)  
Старый 15.01.2021, 16:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Vaska,
$(function () {
        $('.hidden-link-innen').each(function () {
            console.log(window.location, $(this).data('link'))
            if(window.location == $(this).data('link')) {
                $(this).addClass('active');
            }
        });
    });
Ответить с цитированием
  #7 (permalink)  
Старый 15.01.2021, 17:18
Профессор
Отправить личное сообщение для Vaska Посмотреть профиль Найти все сообщения от Vaska
 
Регистрация: 08.05.2017
Сообщений: 178

рони,
В меню получается два блока <ul> с разными названиями классов, и в каждом блоке есть по одной одинаковой ссылке /home/store/feedback_score/store_id/1.html
У второго блока <ul class="menu2">
Я просто не думал, что вы сделаете через класс в span, а не так как раньше было через класс в <ui>. Поэтому я не указал, в начале, про второй блок в меню.

Последний раз редактировалось Vaska, 15.01.2021 в 17:20.
Ответить с цитированием
  #8 (permalink)  
Старый 15.01.2021, 17:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Vaska, пробуйте
$(function () {
        $('.hidden-link-innen').each(function () {
            let href = window.location.href, link = $(this).data('link');
            if(href.indexOf(link) !== -1) {
                $(this).addClass('active');
            }
        });
});
Ответить с цитированием
  #9 (permalink)  
Старый 15.01.2021, 17:31
Профессор
Отправить личное сообщение для Vaska Посмотреть профиль Найти все сообщения от Vaska
 
Регистрация: 08.05.2017
Сообщений: 178

рони,
Работает, но не совсем так как раньше.
Сейчас, если в меню есть суб-меню, то только ему назначает active, а раньше и первой вкладке и подменю назначалось. (вроде так было, несколько часов назад, если я ничего не путаю)
Если сейчас я на странице подменю, то первая вкладка не подсвечивается и я не вижу в каком меню я сейчас нахожусь.
Ответить с цитированием
  #10 (permalink)  
Старый 15.01.2021, 17:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

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');
            }
        });
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить полный путь до элемента дерева? dpts Общие вопросы Javascript 7 11.12.2020 09:55
mouseover jquery SolomonRei Элементы интерфейса 0 27.11.2018 17:41
Замена стилей класса Павел Турченко Элементы интерфейса 9 30.10.2015 15:24
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36